4.16.1. Co je to iterátor?

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.

Varování

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 { ... }).

Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .