0

在匿名函数中,例如

(lambda () x)

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

我唯一能想到的是

(eval `(lambda () ,x))

但我想知道是否还有其他方法。

4

2 回答 2

1

删除eval. 只是`(lambda () ,x)

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

于 2016-12-24T15:43:41.797 回答
1

更好的解决方案是添加

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

在文件的开头。一旦你完成了这些,编写(lambda () x)就足够了,因为 Emacs 将负责用x围绕该 lambda 的范围中的值替换它(即,将创建一个适当的闭包)。

于 2016-12-27T21:39:49.637 回答