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

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Linia 12:
</pre>
 
Zmienne globalne powinny być używane oszczędnie. Są one niebezpieczne, ponieważ mogą być zapisane z dowolnego miejsca programu. Nadmierne użycie zmiennych globalnych może sprawić, że izolowanie błędów będzie trudne, a ponadto może wskazywać, że projekt programu nie został gruntownie przemyślany. Ilekroć uznasz za niezbędne użycie zmiennej globalnej, upewnij się, że dasz jej opisową nazwę która nie będzie skłaniać do użycia jej potem niezgodnie z twoimi intencjami. NazwanieNa jejprzykład, np.nazwanie zmiennej globalnej "<tt>$foo</tt>" będzie prawdopodobnie złym pomysłem.
 
Jedną z przyjemnych cech zmiennych globalnych jest to, że mogą być śledzone. Możesz określić procedurę, która będzie wywoływana za każdym razem, gdy wartość zmiennej ulegnie zmianie.
 
<pre>
ruby> trace_var :$x, proc { puts "$x iswynosi nowteraz #{$x}" }
nil
ruby> $x = 5
$x iswynosi nowteraz 5
5
</pre>
 
JakJeśli zmienna globalna została przeznaczona do pracy jako spustprzełącznik wywołujący procedurę, gdy tylko zmieni się jej wartość, nazywamy ją czasem ''aktywną zmienną''. MożeTakie toużycie zmiennych może być całkiem użyteczne do np. aktualizacji wyświetlania GUI.
 
Istnieje zbiór specjalnych zmiennych, który nazwy składają się ze znaku dolara (<tt>$</tt>) oraz jakiegoś pojedynczego znaku. Dla przykładu, <tt>$$</tt>. zawiera identyfikator procesu interpretera Rubiego, i jest tylko do odczytu. Oto główne zmienne systemowe:
 
{| class="wikitable"
Linia 75:
|}
 
W powyższym <tt>$_</tt> i <tt>$~</tt> mają zasięg '''lokalny'''. IchChoć ich nazwy sugerują, że powinny być globalne, aleto z onewygody bardzojak wygodnei w ten sposób,pewnych ahistorycznych takżezaszłościpewneużywane historycznew powodyten używania tych nazwsposób.
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Zmienne|poprz=Zmienne|nastart=Ruby/Zmienne instancji|nast=Zmienne instancji}}