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]