在lambda表达式中取消引用符号?

时间:2016-12-24 15:37:22

标签: variables emacs elisp backquote

在匿名函数中,例如

(lambda () x)

如何将符号x替换为当前范围内的值?

我唯一能想到的是

(eval `(lambda () ,x))

但我想知道是否还有另一种方式。

2 个答案:

答案 0 :(得分:1)

删除eval。只需`(lambda () ,x)

返回列表 (lambda () VAL-X),其中VAL-X是变量x的值。并且一个lambda列表被Emacs解释为函数。

答案 1 :(得分:1)

更好的解决方案是添加

;; -*- lexical-binding:t -*-

在文件的开头。完成后,编写(lambda () x)即可,因为Emacs将负责使用该lambda范围内的值替换x(即将创建一个合适的闭包) )。