Når man skal iterere over datastrukturer, blir indekser lett i veien.
Såkalte "off-by-one" feil er ganske vanlige.
Men hvorfor ikke la datastrukturen stå for itereringen?
1| personer = [ "Ola", "Per", "Jan", "Line"] 2| 3| # Den "gamle" naive måten 4| for i in (0...personer.size) 5| puts "Hei " + personer[i] 6| end 7| 8| # Alle objekter som implementerer 'each' kan itereres over 9| for person in personer 10| puts "Er #{person} tilstede?" 11| end 12| 13| # Ruby-måten: Bruke Iterator og en block 14| personer.each do |person| 15| puts "Velkommen #{person}" 16| end |
"Hva er den |person|
greia?"
Det er nesten som en argumentdeklarasjon, men ikke til en funksjon.
do |person|; end
er en block, et veldig viktig konsept i Ruby.