gpt4 book ai didi

emacs - 为什么不引用lambda?

转载 作者:行者123 更新时间:2023-12-04 03:44:04 25 4
gpt4 key购买 nike

有人告诉我,我不应该在其中引用lambda,

(global-set-key (quote [f3]) '(lambda ()   (interactive) (other-window -1) ))

我确实尝试过,如果我不引用lambda,它也同样有效
(global-set-key (quote [f3]) (lambda ()   (interactive) (other-window -1) ))

但是,我不理解后者为什么起作用(并且也很受欢迎,现在后者起作用了,为什么前者也起作用了)。

如果将lambda表达式定义为其他函数,我们将调用
(global-set-key (quote [f3]) 'my-function)

以防止我的功能立即被评估。我将lambda表达式理解为my-function的匿名版本。那么为什么不应该引用lambda?

谢谢!

最佳答案

使用C-h f lambda <RET>:

A call of the form (lambda ARGS DOCSTRING INTERACTIVE BODY) is self-quoting; the result of evaluating the lambda expression is the expression itself.



因此,这回答了一个问题,为什么您不需要引用lambda表达式。至于为什么不应该这么做……我认为,这与字节编译有关。带引号的lambda表达式只是简单的数据。字节码编译器别无选择,只能将表达式作为常量列表文字包含在其输出中。另一方面,无引号的lambda表达式可以编译为字节码,从而可以更快地执行。

形式 (lambda (...) ...)的列表文字在emacs lisp评估程序中是特殊情况,可以用作函数。这就是它起作用的原因,无论您是否引用lambda表达式。

关于emacs - 为什么不引用lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20948325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com