Ruby/Iteratory: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Linia 94:
</pre>
 
Zamienienie ''retry'' na ''redo'' w powyższym przykładzie spowoduje, że tylko bieżąca iteracja będzie wykonana ponownie, z następującym wynikiem:
Replacing retry in the above example with redo causes just the current iteration of the loop to be redone, with this output:
 
012
234
 
''yield'' jest wyrażeniem, które pojawia się czasem w definicji iteratora. ''yield'' przenosi sterowanie do bloku kodu który został przekazany do iteratora (wyjaśnimy to dogłębniej w [[Ruby/Procedury jako obiekty|rozdziale]] poświęconym obiektom - procedurom). Następujący przykład definiuje iterator ''repeat'', który powtarza blok kodu określoną ilość razy przekazaną jako argument.
yield occurs sometimes in a definition of an iterator. yield moves control to the block of code that is passed to the iterator (this will be explored in more detail in the chapter about procedure objects). The following example defines an iterator repeat, which repeats a block of code the number of times specified in an argument.
 
<pre>
Linia 116:
</pre>
 
Używając ''retry'' można zdefiniować iterator który będzie działał mniej więcej jak standardowa pętla ''while''.
With retry, one can define an iterator which works something like ruby's standard while.
 
<pre>
Linia 129:
</pre>
 
Czy już rozumiesz czym jest iterator? Są pewne ograniczenia, ale możesz pisać własne oryginalne iteratory; i rzeczywiście, kiedy tylko definiujesz nowy typ danych, wygodnie jest zdefiniować odpowiednie iteratory które będą na nim operować. W tym sensie, powyższe przykłady nie są szczególnie użyteczne. O bardziej praktycznych iteratorach będziemy mogli powiedzieć, kiedy już lepiej zrozumiemy czym są klasy.
Do you understand what an iterator is? There are a few restrictions, but you can write your original iterators; and in fact, whenever you define a new data type, it is often convenient to define suitable iterators to go with it. In this sense, the above examples are not terribly useful. We can talk about practical iterators after we have a better understanding of what classes are.
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Struktury sterujące|poprz=Struktury sterujące|nastart=Ruby/Myślenie zorientowane obiektowo|nast=Myślenie zorientowane obiektowo}}