7

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

(let ((a (func))
      (b (if (eq a 1) 2 3)))
  ...)    

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

4

1 回答 1

12

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

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

(let ((a 1))
  (let ((b (1+ a)))
    (let ((c (* 2 b)))
      ...)))

相当于

(let* ((a 1)
       (b (1+ a))
       (c (* 2 b)))
  ...)
于 2013-09-17T19:05:08.073 回答