Funkcje i klasy zagnieżdżone
Funkcje zagnieżdżone mają dostęp do wszystkich zmiennych i funkcji widocznych w zewnętrznej funkcji.
Jeśli funkcja zagnieżdżona zostanie użyta jako konstruktor, nowy żółw-obiekt będzie miał dostęp do funkcji
widocznych w zewnętrznej funkcji. Nie jest to jednak dziedziczenie z klasy opisanej funkcją zewnętrzną:
- kod funkcji zewnętrznej nie jest wykonywany jako konstruktor klasy bazowej;
- zmienne lokalne i globalne utworzone w zewnętrznej funkcji nie są widoczne dla nowego żółwia.
Uwaga: wszystkie funkcje zdefiniowane w programie są zagnieżdżone w głównej funkcji żółwia
#first
.
Przykład 1:
Wywołanie funkcji zagnieżdżonej f2
: widoczne są funkcje i zmienne zewnętrzne.
"x := 1
to f1 print "zewnętrzna end
to test
to f2
print "f2
print :x
end
f1
f2
end
test
Rezultat wykonania:
zewnętrzna
f2
1
Przykład 2:
Funkcja zagnieżdżona f2
użyta jako klasa nowego żółwia: widoczne są funkcje zewnętrzne, jednak nowy
żółw nie ma dostępu do zmiennej :x
utworzonej na zewnątrz funkcji
test
.
"x := 1
to f1 print "zewnętrzna end
to test
to f2
print "f2
f1
end
"t := newt $f2
end
test
Rezultat wykonania:
f2
zewnętrzna
Zobacz także:
Żółw - obiekt
Spis treści