Zmienne lokalne

Zmienna lokalna jest dostępna wewnątrz funkcji w której została utworzona i we wszystkich zagnieżdżonych w niej funkcjach. Zauważ, że instrukcje znajdujące się poza funkcjami zadeklarowanymi w programie są treścią głównej funkcji żółwia #first.

Zmienne lokalne istnieją tylko w trakcie wykonania funkcji, w której powstały. W każdym kolejnym wywołaniu funkcji tworzony jest nowy zestaw zmiennych lokalnych.

W przypadku użycia funkcji jako opisu klasy, zmienne lokalne utworzone w tej funkcji są odpowiednikiem zmiennych chronionych w innych językach programowania obiektowego - operator @ nie umożliwia żółwiom dostępu do zmiennych lokalnych innych żółwi, natomiast są one dostępne w klasach potomnych.

Używaj zmiennych lokalnych wszędzie, gdzie tylko jest to wystarczające. Są one najwydajniejsze pod względem prędkości działania programu; pozwalają ograniczyć użycie pamięci; a co najważniejsze: zachowanie minimalnego niezbędnego dostępu do danych to prawidłowy styl programowania obiektowego.

Przykład 1:

to sum2 :a :b     ;argumenty funkcji :a i :b są zmiennymi lokalnymi
  let "s :a + :b  ;zmienna :s także jest lokalna
  output :s^2
end

print sum2 2 3    ;wywołanie sum2, która tworzy zmienne lokalne
;print :s         ;błąd: zmienna :s istniej tylko w czasie wykonania sum2

Rezultat wykonania:

25

Przykład 2:

to klasa :a :b
  let "priv :a + :b  ;zmienna lokalna - "chroniona"
  make "s2 :priv^2   ;zmienna globalna - "publiczna"

  to get_s           ;umożliwia odczytanie zmiennej chronionej
    op :priv
  end

  to set_s :s        ;umożliwia ustawienie zmiennej chronionej
    make "priv :s
    make "s2 :s^2    ;..oraz dodatkowe operacje
  end
end

make "t (newt $klasa 2 3)
print get_s @ :t
;print :priv @ :t    ;błąd: zmienna :priv jest niedostępna
print :s2 @ :t

(set_s 6) @ :t
print get_s @ :t
print :s2 @ :t

Rezultat wykonania:

5
25
6
36

Zobacz także:

Typy danych
Zmienne, dostęp do danych

Spis treści