Utwórz wiele żółwi (konstruktor asynchroniczny)

(anewturtles n)
anewturtles n [instrukcje]
(anewturtles n [instrukcje] wyrażenie1 wyrażenie2 ...)
anewturtles n funkcja
(anewturtles n funkcja wyrażenie1 wyrażenie2 ...)

Tworzy n nowych żółwi jednocześnie. Lista instrukcji lub funkcja podane jako argument są wykonywane jako konstruktor dla każdego nowego żółwia. Konstruktory są wykonywane równolegle. Żółw wywołujący instrukcję newturtles nie czeka na zakończenie wykonania konstruktorów. Argumenty konstruktora mogą być podane jako opcjonalne wyrażenia (wszystkie nowe żółwie użyją tych samych wartości wyrażeń).

Przykład 1:

"t := (anewturtles 3)
print who
print children
foreach "ti :t [(print who @ :ti parent @ :ti )]

Rezultat wykonania:

first
[t1 t2 t3]
t1 first
t2 first
t3 first

Przykład 2:

"t := anewturtles 3 [
  to getx op :x end
  "x := random 10
  print who
]
;print :x @ :t,3 ;błąd: zmienna :x może nie być jeszcze gotowa
print getx @ :t,3

Rezultat wykonania:

t2
t1
t3
2

Przykład 3:

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

"t := (anewturtles 2 $model 10)
print :t

Rezultat wykonania:
Polecenie print :t jest wykonane zanim żółwie zakończą wykonanie konstruktorów.

model1 1
[model1 model2]
model2 1
model1 2
model2 2
model1 3
model2 3

Zobacz także:

Żółw - obiekt

Spis treści