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| for i in (0...personer.size) # Den "gamle" naive måten. 4| puts "Hei " + personer[i] 5| end 6| 7| for person in personer # Alle objekter som implementerer 8| puts "Er #{person} tilstede?" # 'each' kan itereres over. 9| end 10| 11| personer.each do |person| # Ruby-måten. 12| puts "Velkommen #{person}" 13| end |
"Hva er den |person|
greia?"
Det er nesten som en argumentdeklarasjon, men ikke til en funksjon.
do |person| end
er en blokk, et veldig viktig konsept i Ruby.