Ustaw/utwórz zmienną lokalną

let nazwa wartość
localmake nazwa wartość

Nadaje nową wartość zmiennej lokalnej o danej nazwie, lub tworzy nową zmienną lokalną, jeśli zadana zmienna nie została znaleziona wśród zmiennych lokalnych utworzonych w bieżącej funkcji.
W dialekcie POOL instrukcja let jest krótszym sysnonimem dla localmake.

Przykład 1:

Przykład obrazuje dostęp do zmiennych lokalnych i globalnych: zmienna globalna :x o wartości 1 jest widoczna wewnątrz funkcji, dopóki nie zostanie utworzona zmienna lokalna o tej samej nazwie i wartości 5. Zmiana wartości zmiennej lokalnej nie ma wpływu na wartość zmiennej globalnej.

to fun
  print :x
  let "x 5
  print :x
end

make "x 1
fun
print :x

Rezultat wykonania:

1
5
1

Przykład 2:

Przykład obrazuje sposób tworzenia zmiennych lokalnych oraz przesłanianie zmiennych.
Funkcja silnia jest rekurencyjna, wywołuje samą siebie zmniejszając wartość argumentu :x.
Argument funkcji zawsze jest tworzony jako nowa zmienna lokalna wykonywanej funkcji i przesłania zmienne o tej samej nazwie w funkcjach nadrzędnych (oraz zmienne globalne i współdzielone o tej samej nazwie).
Wariant 1
Instrukcja let "i :i + 1 tworzy nową zmienną lokalną dla każdego wykonania funkcji silnia (w tym wykonań zagnieżdżonych). Wartość początkowa używa zmiennej :i, widocznej jako zmienna lokalna nadrzędnej funkcji (funkcji silnia lub głównej funkcji żółwia #first). Wartość w nadrzędnej funkcji nie ulega zmianie.
Wariant 2
Instrukcja make "i :i + 1 przypisuje nową wartość zmiennej :i dla każdego wykonania funkcji silnia. Nowa wartość :i używa jej poprzedniej wartości. Wartość zmiennej :i widocznej w głównej funkcji żółwia #first ulega zmianie.

to silnia :x
  ;wariant 1)
  ;tworzy nową zmienną lokalną :i dla każdego wykonania
  ;funkcji silnia, wartość początkowa to wartość :i w funkcji
  ;nadrzędnej + 1
  let "i :i + 1

  ;wariant 2)
  ;nie tworzy nowej zmiennej, :i istnieje w głównej funkcji
  ;make "i :i + 1

  print :i

  if :x > 1 [op :x * silnia :x - 1]
  op 1
end

let "i 0 ;tu możesz użyć make bez wpływu na rezultat działania
print silnia 5
print :i

Rezultat wykonania (wariant 1):

1
2
3
4
5
120
0

Rezultat wykonania (wariant 2):

1
2
3
4
5
120
5

Zobacz także:

Zmienne w POOL
make, name - ustaw zmienną lub utwórz zmienną globalną

Spis treści