Ruby/Struktury sterujące: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje) Nie podano opisu zmian |
Szymon wro (dyskusja | edycje) |
||
Linia 59:
</pre>
Czasami chcesz zanegować sprawdzany warunek. ''unless'' jest zanegowanym ''if'' a ''until'' zanegowanym ''while''. Poeksperymentuj jak chcesz z tymi dwoma instrukcjami.
Są cztery sposoby do przerwania postępu pętli z jej wnętrza. Pierwszy, ''break'' oznacza, tak jak w C, zupełną ucieczkę z pętli. Drugi, ''next'' przeskakuje na początek kolejnej iteracji pętli (podobnie jak znane z C ''continue''). Trzeci, to specyficzne dla Rubiego ''redo'', które oznacza ponowne wykonanie bieżącej iteracji. Następujący kod w języku C ilustruje znaczenia instrukcji ''break'', ''next'', i ''redo'':
<pre>
while (condition) {
label_redo:
goto label_next; /*
goto label_break; /*
goto label_redo; /*
...
...
Linia 77:
</pre>
Czwarty sposób by wyjść z pętli będąc w jej wnętrzu to ''return''. Obliczenie instrukcji ''return'' powoduje wyjście nie tylko z pętli ale również z metody która tę pętle zawiera. Jeżeli podany został argument, będzie on zwrócony jako rezultat wywołania metody. W przeciwnym wypadku zwracane jest ''nil''.
=== for ===
Programiści C będą się zastanawiać jak zrobić pętlę "''for''". ''for'' Rubiego może służyć w ten sam sposób, choć jest nieco bardziej elastyczne. Pętla poniżej przebiega raz każdy element w kolekcji (tablicy, tablicy asocjacyjnej, sekwencji numerycznej, itd.), ale nie zmusza programisty do myślenia o indeksach:
<pre>
for elt in collection
# ...
end
</pre>
Kolekcją może być przedział wartości (to właśnie większość ludzi ma na myśli, gdy mówi o pętli ''for''):
<pre>
Linia 100 ⟶ 101:
</pre>
W tym przykładzie przejdziemy również przez kilka elementów tablicy:
<pre>
Linia 112 ⟶ 113:
</pre>
Ale prześcigamy samych siebie. ''for'' jest tak naprawdę innym sposobem zapisania instrukcji ''each'', która, jak to bywa, jest naszym pierwszym przykładem iteratora. Poniższe formy są równoważne:
Jeżeli przywykłeś do C lub Javy, możesz preferować tą.
<pre>
Linia 122 ⟶ 123:
</pre>
Natomiast programista Smalltalka może preferować taką.
<pre>
Linia 130 ⟶ 131:
</pre>
Iteratory często mogą być używane zamiast konwencjonalnych pętli, i jak już nabierzesz wprawy w stosowaniu ich, stają się zazwyczaj łatwiejsze w stosowaniu od pętli. Zatem ruszmy się dalej i dowiedzmy się o nich czegoś więcej.
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Powrót do prostych przykładów|poprz=Powrót do prostych przykładów|nastart=Ruby/Iteratory|nast=Iteratory}}
|