Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在匿名函数中,例如
(lambda () x)
如何x在当前范围内将符号替换为其值?
x
我唯一能想到的是
(eval `(lambda () ,x))
但我想知道是否还有其他方法。
删除eval. 只是`(lambda () ,x)。
eval
`(lambda () ,x)
这将返回列表 (lambda () VAL-X),其中VAL-X是变量的值x。Emacs 将 lambda 列表解释为一个函数。
(lambda () VAL-X)
VAL-X
更好的解决方案是添加
;; -*- lexical-binding:t -*-
在文件的开头。一旦你完成了这些,编写(lambda () x)就足够了,因为 Emacs 将负责用x围绕该 lambda 的范围中的值替换它(即,将创建一个适当的闭包)。