在 lambda 表达式中取消引用符号?
Unquote symbol in lambda expression?
在匿名函数中,例如
(lambda () x)
如何用当前范围内的值替换符号 x
?
我唯一能想到的就是
(eval `(lambda () ,x))
但是不知道有没有别的办法
删除 eval
。就 `(lambda () ,x)
.
即returns列表(lambda () VAL-X)
,其中VAL-X
是变量x
的值。 Emacs 将 lambda 列表解释为函数。
更好的解决方案是添加
;; -*- lexical-binding:t -*-
在文件的开头。完成后,只需要编写 (lambda () x)
即可,因为 Emacs 随后会负责将 x
替换为来自该 lambda 周围范围的值(即,将创建一个适当的闭包)。
在匿名函数中,例如
(lambda () x)
如何用当前范围内的值替换符号 x
?
我唯一能想到的就是
(eval `(lambda () ,x))
但是不知道有没有别的办法
删除 eval
。就 `(lambda () ,x)
.
即returns列表(lambda () VAL-X)
,其中VAL-X
是变量x
的值。 Emacs 将 lambda 列表解释为函数。
更好的解决方案是添加
;; -*- lexical-binding:t -*-
在文件的开头。完成后,只需要编写 (lambda () x)
即可,因为 Emacs 随后会负责将 x
替换为来自该 lambda 周围范围的值(即,将创建一个适当的闭包)。