в elisp's let, как вы ссылаетесь на переменную, связанную в том же let, при связывании другой переменной? - PullRequest
13 голосов
/ 22 июля 2011
(let ((a 1) (b (+ a 1)))
  (message a))

Это выдает ошибку

Debugger entered--Lisp error: (void-variable a)

Какой канонический способ сделать это?

1 Ответ

26 голосов
/ 22 июля 2011

Каноническим способом является использование let* (также обратите внимание, что я добавил строку формата %s в вашу форму message):

(let* ((a 1) (b (+ a 1)))
  (message "%s" a))

let* Функция позволяет ссылаться на другие переменные, которые были ранее определены.

...