Ruby/Zmienne lokalne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Linia 51:
Zauważ, że nie można pominąć <tt>a = nil</tt> na początku. To przypisanie zapewnia, że zasięg zmiennej <tt>a</tt> obejmie <tt>l1</tt> i <tt>l2</tt>. Inaczej <tt>l1</tt> i <tt>l2</tt> utworzyłyby swoje własne zmienne lokalne <tt>a</tt>, i rezultatem wywołania <tt>l2</tt> byłby błąd "undefined local variable or method" (niezdefiniowana zmienna lokalna lub metoda). Moglibyśmy użyć <tt>a = 0</tt>, ale użycie <tt>nil</tt> jest pewną uprzejmością wobec przyszłych czytelników naszego kodu. Pokazuje naprawdę jasno, że tylko ustanawiamy zakres, ponieważ wartość przypisana do zmiennej nie niesie żadnego specjalnego znaczenia (<tt>nil</tt>).
 
=== Domknięcia a kontekst ===
W rozdziale o [[Roby/Domknięcia i obiekty procedurowe|domknięciach i obiektach procedurowych]] wspomnieliśmy, że domknięcia i obiekty procedurowe zachowują kontekst używanych zmiennych lokalnych. Jest to bardzo potężna zaleta: współdzielone zmienne lokalne pozostają poprawne nawet wtedy, gdy przekazane są poza pierwotny zakres.
 
W rozdziale o [[RobyRuby/Domknięcia i obiekty procedurowe|domknięciach i obiektach procedurowych]] wspomnieliśmy, że domknięcia i obiekty procedurowe zachowują kontekst używanych zmiennych lokalnych. Jest to bardzo potężna zaleta: współdzielone zmienne lokalne pozostają poprawne nawet wtedy, gdy przekazane są poza pierwotny zakres.
 
<source lang="ruby">