LISP - zmienne
W LISP każda zmienna jest reprezentowana przez symbol. Nazwa zmiennej jest nazwą symbolu i jest przechowywana w komórce pamięci symbolu.
Zmienne globalne
Zmienne globalne mają stałe wartości w całym systemie LISP i pozostają w mocy do momentu określenia nowej wartości.
Zmienne globalne są zwykle deklarowane przy użyciu rozszerzenia defvar zbudować.
Na przykład
(defvar x 234)
(write x)
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast i zwrócony wynik to
234
Ponieważ w LISP nie ma deklaracji typu dla zmiennych, bezpośrednio określasz wartość symbolu z rozszerzeniem setq zbudować.
Na przykład
->(setq x 10)
Powyższe wyrażenie przypisuje wartość 10 do zmiennej x. Możesz odwołać się do zmiennej używając samego symbolu jako wyrażenia.
Plik symbol-value Funkcja pozwala wyodrębnić wartość przechowywaną w miejscu przechowywania symbolu.
Na przykład
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)
(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast i zwrócony wynik to.
x = 10 y = 20
x = 100 y = 200
Zmienne lokalne
Zmienne lokalne są definiowane w ramach danej procedury. Parametry nazwane jako argumenty w definicji funkcji są również zmiennymi lokalnymi. Zmienne lokalne są dostępne tylko w ramach odpowiedniej funkcji.
Podobnie jak zmienne globalne, zmienne lokalne można również tworzyć za pomocą setq zbudować.
Istnieją dwie inne konstrukcje - let i prog do tworzenia zmiennych lokalnych.
Konstrukcja let ma następującą składnię.
(let ((var1 val1) (var2 val2).. (varn valn))<s-expressions>)
Gdzie var1, var2, ..varn to nazwy zmiennych, a val1, val2, .. valn to początkowe wartości przypisane do odpowiednich zmiennych.
Gdy letjest wykonywana, każdej zmiennej przypisywana jest odpowiednia wartość, a na koniec oceniane jest s-wyrażenie . Zwracana jest wartość ostatniego ocenianego wyrażenia.
Jeśli nie podasz wartości początkowej zmiennej, zostanie ona przypisana nil.
Przykład
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast i zwrócony wynik to.
x = A y = B z = C
Plik prog Konstrukcja ma również listę zmiennych lokalnych jako pierwszy argument, po którym następuje treść prog, i dowolna liczba wyrażeń s.
Plik prog function wykonuje listę s-wyrażeń w kolejności i zwraca nil, chyba że napotka wywołanie funkcji o nazwie return. Następnie argument return funkcja jest obliczana i zwracana.
Przykład
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast i zwrócony wynik to.
x = (A B C) y = (1 2 3) z = (P Q 10)