lisp - 如何根据 elisp 中的一个条件设置一堆变量?

标签 lisp elisp

假设我想根据一个条件设置 barbaz 的值,这在两种情况下都是相同的,比如说 foo。使用 let 特殊形式,我做这样的事情

(let ((bar (if foo 1 2))
      (baz (if foo 3 4)))
  ... )

虽然上面的程序是正确的,但看起来有点奇怪,因为它检查了两次 foo 的值。在这种情况下,是否可以使用一种惯用的表达方式来避免双重检查?

最佳答案

您不需要在 let 表单本身中设置值。 let 形式创建本地绑定(bind),之后您可以根据需要设置值。

(let (bar baz)
  (if foo
      (setq bar 1
            baz 2)
    (setq bar 3
          baz 4))
  ...)

关于lisp - 如何根据 elisp 中的一个条件设置一堆变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573087/

相关文章:

http - Lisp 的奇怪 HTTP 问题/错误

scheme - 使用 argmax 查找元素列表中的最大数

lisp - Lisp 中的默认编程

Emacs:打开特定的信息部分

emacs - If 语句/字符串比较

Emacs Lisp : difference between (function (lambda . ..))和(lambda ...)?

scheme - 将 The Little Schemer 中的 Q 和 P 函数翻译成 Common Lisp?

algorithm - Racket 上的动态规划

终端内的 Emacs 动态更改光标颜色

Emacs:在变量值之后返回的信息是什么?