Hashes

Hashes (Sing.: Hash, auch Hashmap genannt) sind assoziative Arrays. Im Gegensatz zu PHP gibt es eine strikte und klare Trennung zwischen Hashes und normalen Arrays. Wissenswertes über Rubys Hashes erfahrt ihr in diesem Artikel.

Lerne mehr über Ruby on Rails mit Martin Labuschins
Ruby on Rails Link Library.

Assoziative Arrays?

Wie ich bereits erwähnt habe, sind die Schlüssel (Keys) in Array immer Ganzzahlen. Hashes hingegen können jedes Objekt als Schüssel annehmen. Somit kann man eine wirkliche, semantische Verbindung zwischen Schlüssel und Werten herstellen. Sie erhalten also eine Assoziation und werden deshalb oft als assoziative Arrays bezeichnet.

Hashes erzeugen und indizieren

Die Verwendung von Hashes bietet sich immer dann an, wenn man eine Verbindung zwischen Namen und Werten herstellen möchte. Gutes Beispiel: Zugangsdaten.

benutzer = {
  'Max'     => 123456,
  'Moritz'  => 'anna4',
  'Lisa'    => 'g6H22j'
}

Wichtig: die Kommas nicht vergessen. Diese sind, wie auch in Arrays Pflicht. Die Relevanz des Kommas wird meist erst klar, wenn man ein Hash in einer Zeile erzeugt:

benutzer = { 'Max' => 123456, 'Moritz' => 'anna4', 'Lisa' => 'g6H22j' }

Falls noch niemand Rubys literalen Unterschied zwischen Hashes und Array erkannt hat: es sind die geschweiften Klammern.

Beim Indizieren eines Hashes gibt es jedoch keinen literalen Unterschied zu Arrays:

puts benutzer['Max']

puts gibt Inhalte aus. In diesem Fall würde es die Ganzzahl 123456 ausgeben. Richtig: Hashes sind auch typlos.

Falls man einen Hash mit einem Schlüssel indiziert, der darin nicht enthalten ist, wird nil zurückgegeben. Bei Bedingungsausdrücken hat das einen Vorteil, da nil hier als false angesehen wird. Die Rückgabe eines leeren Schlüssels ist jedoch konfigurierbar. Beim Erzeugen des Hashes mit der Methode new kann man ein beliebiges Objekt als Parameter übergeben:

mein_hasch = Hash.new('leer')
puts mein_hash[2]

Falls der Schlüssel 2 also nicht belegt ist, wird puts den String leer ausgeben.

Mehr über Rubys Hash erfahren

In der Ruby-Dokumentation sind alle (meist sehr nützlichen) Methoden der Klasse Hash erklärt.

veröffentlicht am 20.05.2007 um 22:00 von Martin Labuschin in ,


Hallo,

Vorerst, schöner Beitrag für Ruby-Einsteiger. :-)


Nur als Hinweis:
benutzer = { 'Max' => '123456', 'Moritz' => 'anna4', 'Lisa' => 'g6H22j' }


An dieser Stelle hast Du dem Schlüssel 'Max' keine Ganzzahl (Fixnum), wie beschrieben, sondern einen String zugewiesen. Über den Datentyp kannst Du Dich via benutzer['Max'].class informieren.

Grüße,
Sven Gerlach.

Danke für den Hinweis. Ich habe es ausgebessert.

Super, dass dir der Artikel gefallen hat.

blog comments powered by Disqus
The Ruby on Rails Link Library Spanning Sync SEO-Dokumentation Gowalla
ProWebApps WellDone (β) Pinboard (α) Netzwerk Münsterland
Blogs Bücher Frameworks iPhone Mac Web-Apps