Iterátor je metoda která jako parametr akceptuje blok nebo objekt třídy Proc
. Blok kódu se aplikuje na vybrané prvky.
kolekce.vyber do |element|
# použití elementu
end
Iterátor se používá k realizaci uživatelsky definovaných řídicích struktur, obzvláště cyklů.
Ukažme si jednoduchý příklad:
# File: session/iterator-1.ses
data = [ 'první', 'druhý', 'třetí' ]
["prvn\303\255", "druh\303\275", "t\305\231et\303\255"]
data.each do |slovo|
puts slovo
end
první
druhý
třetí
["prvn\303\255", "druh\303\275", "t\305\231et\303\255"]
Metodě each
objektu data
jenž je třídy Array
je předán blok. Tedy kód uvedený mezi do ... end
. Metoda tento blok opakovaně vykonává pro každý prvek pole. Tento prvek pak předává do bloku jako parametr slovo
.
V některých případech mají konstrukce bloku do ... end
a { ... }
odlišný význam.
foobar a, b do ... end # foobar je iterátor foobar a, b { ... } # b je iterátor
Toto je způsobeno odlišnou prioritou { ... }
. První případ je ekvivalentní foobar(a, b) do ... end
zatímco druhý foobar(a, b { ... })
.