defun

Wyszukaj w słowniku

Dostępne słowniki:

Termin Definicja
defun

 Tworzy nową funkcję, którą można używać w innych operacjach.

 

Nazwa - w zasadzie może być dowolna.

(defun [C:]nazwa ([argument1 argument2] / [zmienna_lokalna1 zmienna_lokalna2 ] )

 

wyrażenia
...
wartość_zwracana
)

 

 

  • w LISP nie ma polimorficzności funkcji więc nie może być wielu funkcji różniących się parametrami używając wielokrotnie tej samej nazwy, tylko ostatnia będzię funkcją, pozostałe bedą nadpisane.
  • jeśli w nazwie na początku użyjemy znaków C: funkcja będzie mogła być użyta bezpośrednio w ZWCAD, będzie dodatkowym poleceniem, które użytkownik będzie mógł wywołać wpisując w pasku poleceń nazwę funkcji bez C:

Liczba argumentów funkcji może być dowolna W LISP nie deklaruje się typów zmiennych więc wystarczy podać nazwy zmiennych, które będą przekazane do funkcji. Oczywiście funkcja może nie mieć żadnych argumentów.

Funkcje które są zadeklarowane jako polecenia (czyli mają na początku w nazwie C:) nie powinny mieć parametrów. Oczywiście parametry mogą być , taka funkcja będzie mogła być użyta w innym miejscu w LISP i będzie działała prawidłowo, natomiast w samym ZWCADzie po wpisaniu nazwy funkcji nie będzie możliwości wpisania parametrów.

Po znaku / można zadeklarować nazwy zmiennych lokalnych w funkcji. jeśli znienna nie będzie tutaj zadeklarowana. będzie zmienną globalną, nawet jeśli będzie użyta tylko wewnątrz funkcji. Przez to może dojść do konfliktu jeśli w różnych funkcjch użyjamy tych samych zmiennych. Błędy tego typu są często bardzo trudne do wykrycia.

Funkcja zwraca wartość ostatniego wyrażenia

Przykład:
(defun Dodaj (a b / suma)
(setq suma (+ a b) )
(setq średnia (/ suma 2.0 ))
)

W innym miejscu w LISP możemy użyć:

(Dodaj 12 23.9)
zwróci wynik 17.95

Stan zmiennych możemy sprawdzić w ZWCAD wpisując:

  • (print suma) - wyświetli nil, ponieważ suma jest zadeklarowana jako zmienna lokalna
  • (print średnia ) - wyświetli 17.95 ponieważ zmienna jest globalna czyli jej stan jest zapamiętany poza funkcją, w której jest użyta