next up previous contents index
Search Next: Miniprojekt: Papier, Schere und Up: Arrays und Hashtabellen Previous: Auf Hashelemente zugreifen   Contents   Index


Iteratoren für Hashtabellen

Im Wesentlichen sind die Iteratoren für Hashtabellen die gleichen wie für Arrays, ein paar Unterschiede liegen aber im Detail verborgen. So gibt es zwar eine Array-Methode map!, aber kein Pendant für Hashtabellen.

Ein weiterer Unterschied ist das Element, das an den Codeblock übergeben wird. Bei Arrays war es das am entsprechenden Index gespeicherte Objekt, bei Hashtabellen ist es meist ein Array, bestehend aus Schlüssel und Wert, eine Assoziation also.

Neben der bekannten each-Methode gibt es noch die Komfortmethoden each_key und each_value:

h = {"a"=>2, "b"=>4, "c"=>6}
h.each { |item| p item[0], item[1] }
  #-> "a" 2 "b" 4 "c" 6
h.each_key { |key| p key }
  #-> "a" "b" "c"
h.each_value { |value| p value }
  #-> 2 4 6

Die übrigen Iteratoren map, select, reject sowie delete_if funktionieren entsprechend der Beschreibung oben mit der Einschränkung, dass sie (wie each) jeweils das Schlüssel-Wert-Paar als Argument an den Codeblock übergeben.

h.map { |item| p item }
  #-> ["a", 2] ["b", 4] ["c", 6]
h.select { |item| p item }
  #-> ["a", 2] ["b", 4] ["c", 6]
h.reject { |item| p item }
  #-> ["a", 2] ["b", 4] ["c", 6]



(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20