Funkcja

func nazwa
$nazwa

Instrukcja func pozwala użyć funkcję o danej nazwie jako wartość. Instrukcja zwraca funkcję, która w danym momencie wykonania programu zostałaby użyta w normalnym wywołaniu (funkcje w języku POOL są wirtualne i mogą być przesłaniane przez definicje w funkcjach zagnieżdżonych i klasach potomnych). Raz odczytana wartość nie ulega zmianie w razie przesłonięcia funkcji przez później następujące definicje.
Analogicznie do instrukcji thing, instrukcja func posiada jednoznakowy skrót: symbol $, wymagający podania stałej nazwy funkcji.

Przykład 1:

to ftest :x       ;definicja podstawowa
  output 2 * :x
end

to in_box
  to ftest :x     ;definicja zagnieżdżona
    output :x / 2
  end

  print "in_box
  print (call :f 5) ;wywołuje funkcję zapamiętaną w zmiennej :f
  print ftest 5     ;wywołanie "widzi" funkcję zagnieżdżoną
end

make "f $ftest    ;w zmiennej :f zapisana funkcja podstawowa
print (call :f 5) ;wywołuje funkcję zapamiętaną w zmiennej :f
print ftest 5     ;wywołanie "widzi" funkcję podstawową
in_box

Rezultat wykonania:

10
10
in_box
10
2.5

Przykład 2:

Funkcja model użyta jako konstruktor żółwi.

to model
  setxy (rnorm 0 100) (rnorm 0 50)
  seth random 360
  (setpc random 1000 random 60)
  setps 40
  pd fd 40
end

ht pu
make "t newturtles 20 $model

Rezultat wykonania: rysunek w oknie graficznym.

Zobacz także:

Funkcja jako wartość

Spis treści