如何在 cl、emacs lisp 或 clojure 中将匿名函数分配给局部变量?
我尝试了以下但没有成功。
(let ((y (lambda (x) (* x x)) )) (y 2))
和
((lambda (x) 10) (lambda (y) (* y y)))
最佳答案
在 CL 中,您可以使用 flet
或 labels
。
(defun do-stuff (n)
(flet ((double (x) (* 2 x)))
(double n)))
(do-stuff 123) ;; = 246
正如 Chris 指出的那样,由于 double
不是递归的,我们应该使用 flet
,因为两者之间的区别在于 labels
可以处理递归函数。
查看 docs有关 标签
的信息,或 this question labels
和 flet
的区别。
关于function - Lisp 匿名函数局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32670266/