the beauty of each_with_index 13. Jun 2008
Zum iterieren auf Arrays bietet Ruby den each-Iterator an. Das ist praktisch und erhöht die Lesbarkeit des Quelltextes.
letters = ['a','b','c']
letters.each do |letter|
print "#{letter}\n"
end
Der Nachteil des each-Iterators im Gegensatz zur klassischen For-Schleife ist aber, dass einem nun nicht mehr die Laufvariable zur Verfügung steht. Wenn man dieses doch mal braucht, dann wird es sehr unschön.
i = 0
letters.each do |letter|
print "#{letter}#{i}\n"
i += 1
end
Als Ersatz bietet sich der times-Iterator an, wirklich schön ist das aber auch nicht, da nun das Array wieder explizit referenziert werden muss.
letters.size.times do |i|
print "#{letters[i]}#{i}\n"
end
Das ist die Stelle wo der each_with_index-Iterator glänzen kann. Der liefert nämlich genau das, was er verspricht. Hier hat man gewissermaßen best of both worlds.
letters.each_with_index do |letter, i|
print "#{letter}#{i}\n"
end
Kommentare (1)