Utwórz obiekt (konstruktor asynchroniczny)
(anewobject)
anewobject [instrukcje]
(anewobject [instrukcje] wyrażenie1 wyrażenie2 ...)
anewobject funkcja
(anewobject funkcja wyrażenie1 wyrażenie2 ...)
(anewo)
anewo [instrukcje]
(anewo [instrukcje] wyrażenie1 wyrażenie2 ...)
anewo funkcja
(anewo funkcja wyrażenie1 wyrażenie2 ...)
Tworzy nowy obiekt. Lista instrukcji lub funkcja podane jako argument są wykonywane jako konstruktor
nowego obiektu. Konstruktor jest wykonywany równolegle z dalszymi instrukcjami żółwia wywołującego instrukcję
anewobject
Argumenty konstruktora mogą być podane jako opcjonalne wyrażenia.
Obiekt w POOL jest uproszczoną wersją żółwia. Obiekty nie posiadają reprezentcji graficznej i nie mogą obsługiwać
zdarzeń związanych z grafiką (np. kliknięć myszy). Dzięki temu obiekty zajmują mniej pamięci, są szybciej tworzone
i szybciej wykonują polecenia.
Przykład 1:
"t := (newo)
print who
print children
print parent @ :t
print who @ :t
Rezultat wykonania:
first
[o1]
first
o1
Przykład 2:
"t := newo [
"x := 10
print who
]
print :x @ :t
Rezultat wykonania:
Zauważ: napis "first" może pojawić się przed napisem "o1". Konstruktor obiektu jest wykonywany równolegle z instrukcjami
żółwia #first
.
first
o1
Przykład 3:
to model :x
to fn
op :zmienna^2
end
wait 50
let "zmienna :x
print who
end
"t := (anewo $model 5)
"y := fn @ :t
print who
Rezultat wykonania:
Wariant 1: Napis "first" pojawia się pierwszy - żółw #first
nie czeka na koniec konstruktora.
first
model1
Wariant 2: Napis "first 25" pojawia się po "model1" - użycie wyniku funkcji fn
zapisanego w zmiennej :y
wymusza oczekiwanie na zakończenie
konstruktora i wykonanie funkcji.
model1
first 25
Zobacz także:
Żółw - obiekt
Synchronizacja wielu obiektów
Spis treści