LISP - Funkcje
Funkcja to grupa instrukcji, które razem wykonują zadanie.
Możesz podzielić swój kod na osobne funkcje. To, w jaki sposób podzielisz swój kod na różne funkcje, zależy od Ciebie, ale logicznie jest to zazwyczaj taki podział, że każda funkcja wykonuje określone zadanie.
Definiowanie funkcji w LISP
Makro o nazwie defunsłuży do definiowania funkcji. Plikdefun makro potrzebuje trzech argumentów -
- Nazwa funkcji
- Parametry funkcji
- Treść funkcji
Składnia defun to -
(defun name (parameter-list) "Optional documentation string." body)
Zilustrujmy to pojęcie prostymi przykładami.
Przykład 1
Napiszmy funkcję o nazwie averagenum , która wypisze średnią z czterech liczb. Wyślemy te liczby jako parametry.
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(defun averagenum (n1 n2 n3 n4)
(/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))
Po wykonaniu kodu zwraca następujący wynik -
25
Przykład 2
Zdefiniujmy i wywołajmy funkcję, która obliczy pole koła, gdy promień okręgu zostanie podany jako argument.
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(defun area-circle(rad)
"Calculates area of a circle with given radius"
(terpri)
(format t "Radius: ~5f" rad)
(format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)
Po wykonaniu kodu zwraca następujący wynik -
Radius: 10.0
Area: 314.1592
Należy pamiętać, że -
Możesz podać pustą listę jako parametry, co oznacza, że funkcja nie przyjmuje argumentów, lista jest pusta, zapisana jako ().
LISP dopuszcza również argumenty opcjonalne, wielokrotne i słowa kluczowe.
Ciąg dokumentacji opisuje cel funkcji. Jest powiązany z nazwą funkcji i można go uzyskać za pomocą plikudocumentation funkcjonować.
Ciało funkcji może składać się z dowolnej liczby wyrażeń Lispa.
Wartość ostatniego wyrażenia w treści jest zwracana jako wartość funkcji.
Możesz również zwrócić wartość z funkcji za pomocą return-from operator specjalny.
Omówmy pokrótce powyższe pojęcia. Kliknij poniższe linki, aby znaleźć szczegółowe informacje -
Parametry opcjonalne
Parametry odpoczynku
Parametry słów kluczowych
Zwracanie wartości z funkcji
Funkcje lambda
Funkcje mapowania