在elisp的let中,如何在绑定另一个变量时引用同一个let中的变量?

jsh*_*hen 13 emacs elisp

(let ((a 1) (b (+ a 1)))
  (message a))
Run Code Online (Sandbox Code Playgroud)

这会引发错误

Debugger entered--Lisp error: (void-variable a)
Run Code Online (Sandbox Code Playgroud)

这样做的规范方法是什么?

zev*_*zev 26

规范的方法是使用let*(还要注意我%smessage表单中添加了一个格式字符串):

(let* ((a 1) (b (+ a 1)))
  (message "%s" a))
Run Code Online (Sandbox Code Playgroud)

let*函数允许您引用先前已定义的其他变量.

  • `(让...(让...(让...)))`的简写.你打了我10秒钟.:-) (6认同)
  • 有快速和死亡.;-) (2认同)