Elisp:引用let中的先前变量

Ron*_*Ron 4 elisp local-variables let

我想在let中定义两个变量,其中一个变量取决于另一个变量的值,如下所示:

(let ((a (func))
      (b (if (eq a 1) 2 3)))
  ...)    
Run Code Online (Sandbox Code Playgroud)

显然,这不是正确的方法,emacs说这a是无效的.这样做的正确方法是什么?

sds*_*sds 8

是的,你需要使用let*而不是let.

本质上,let*是嵌套lets 的快捷方式:

(let ((a 1))
  (let ((b (1+ a)))
    (let ((c (* 2 b)))
      ...)))
Run Code Online (Sandbox Code Playgroud)

相当于

(let* ((a 1)
       (b (1+ a))
       (c (* 2 b)))
  ...)
Run Code Online (Sandbox Code Playgroud)