Next Previous Contents

21. <3.3.1>: Iterere over en datastruktur

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.


Next Previous Contents