LISP lokale / globale Variablenzuweisung
Wenn wir so etwas wie eine Funktion definieren
(defun foo(x)
(setf x somevalue))
Istx
definiert als lokale Variable oder global? Mit setf / q wird der Wert auf global gesetzt. Wenn es global ist, kann mir jemand sagen, wie ich eine lokale Variable in lisp anders als definieren solllet
?
Vielen Dank!
Betrachten Sie das folgende Beispiel
(let ((x 0))
(defun foo (y)
(when (equal x 0) (setq x y))
(when (< x y) (setq x y))
x))
wenn ich etwas Input gebefoo
mögen(foo 2)
, es wird 2 zurückgegeben und wenn wir die Funktion erneut mit ausführen(foo 1)
es gibt immer noch 2 und zurück(foo 3)
gibt 3.This zurück, was ich wirklich es tun möchte. Aber die Frage ist, wie das möglich ist, weil, wenn ich versuche, auf die Variable zuzugreifenx
Außerhalb der Funktion vom Clisp-Terminal aus kann ich nicht auf die Funktion zugreifen. Wenn ich erneut auf die Funktion zugreife, scheint sie den vorherigen Wert von beizubehaltenx
.
Danke dir!