在 elisp 中围绕私有函数创建闭包
Creating a closure around a private function in elisp
在 elisp 中我有以下内容
(setq lexical-binding t)
(fset 'boom (cl-flet*
((tickle ()
(message "hi"))
(pickle ()
(tickle)))
(lambda ()
(pickle))))
(boom)
当我 运行 boom 函数时我得到错误
Symbol's value as variable is void: --cl-pickle--
这是怎么回事?
我的意图是我想将 private/helper 函数和变量包装在一个闭包中,这样我就可以更好地组织我的代码,而不是全局的。
不要(setq lexical-binding t)
。您不想执行设置此变量的命令。相反,您想向 Emacs 描述您编写的代码使用词法绑定,为此您需要添加:
-*- lexical-binding:t -*-
文件第一行某处。
在 elisp 中我有以下内容
(setq lexical-binding t)
(fset 'boom (cl-flet*
((tickle ()
(message "hi"))
(pickle ()
(tickle)))
(lambda ()
(pickle))))
(boom)
当我 运行 boom 函数时我得到错误
Symbol's value as variable is void: --cl-pickle--
这是怎么回事?
我的意图是我想将 private/helper 函数和变量包装在一个闭包中,这样我就可以更好地组织我的代码,而不是全局的。
不要(setq lexical-binding t)
。您不想执行设置此变量的命令。相反,您想向 Emacs 描述您编写的代码使用词法绑定,为此您需要添加:
-*- lexical-binding:t -*-
文件第一行某处。