Utwórz wiele obiektów (konstruktor synchroniczny)

(newobjects n)
newobjects n [instrukcje]
(newobjects n [instrukcje] wyrażenie1 wyrażenie2 ...)
newobjects n funkcja
(newobjects 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 czeka na zakończenie wykonania wszystkich 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 := (newobjects 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 := newobjects 3 [
  "x := random 10
  print who
]
foreach "ti :t [print :x @ :ti]

Rezultat wykonania:

o1
o2
o3
2
5
3

Przykład 3:

to model :dt
  repeat 3 [print who wait :dt]
  "x := :dt ;zmienna globalna (publiczna)
end

"t := (newobjects 2 $model 50)
foreach "ti :t [print :x @ :ti]

Rezultat wykonania:

model1
model2
model1
model2
model1
model2
50
50

Zobacz także:

Żółw - obiekt
Synchronizacja wielu obiektów

Spis treści