Utwórz wiele obiektów (konstruktor asynchroniczny)
(anewobjects n)
anewobjects n [instrukcje]
(anewobjects n [instrukcje] wyrażenie1 wyrażenie2 ...)
anewobjects n funkcja
(anewobjects n funkcja wyrażenie1 wyrażenie2 ...)
Tworzy n nowych obiektów jednocześnie. Lista instrukcji lub funkcja podane jako argument są
wykonywane jako konstruktor dla każdego nowego obiektu. Konstruktory są wykonywane równolegle. Żółw/obiekt wywołujący
instrukcję newobjects
nie czeka na zakończenie wykonania
konstruktorów. Argumenty konstruktora mogą być podane jako opcjonalne wyrażenia (wszystkie nowe obiekty użyją
tych samych wartości wyrażeń).
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 := (anewobjects 3)
print who
print children
foreach "ti :t [(print who @ :ti parent @ :ti )]
Rezultat wykonania:
first
[o1 o2 o3]
o1 first
o2 first
o3 first
Przykład 2:
"t := anewobjects 3 [
to getx op :x end
"x := random 10
print who
]
print getx @ :t,3
Rezultat wykonania:
o2
o1
o3
2
Przykład 3:
to model :dt
repeat 3 [(print who repcount) wait :dt]
"x := :dt
end
"t := (anewobjects 2 $model 10)
print :t
Rezultat wykonania:
Polecenie print :t
jest
wykonane zanim obiekty zakończą wykonanie konstruktorów.
[model1 model2]
model1 1
model2 1
model1 2
model2 2
model1 3
model2 3
Zobacz także:
Żółw - obiekt
Synchronizacja wielu obiektów
Spis treści