Elisp:我如何表达 else-if

Elisp: how can I express else-if

在 elisp 中,if 语句逻辑只允许我使用 if case 和 else case。

(if (< 3 5) 
  ; if case
    (foo)
  ; else case
    (bar))

但是如果我想做一个 else-if 怎么办?我需要在 else 案例中添加一个新的 if 语句吗?就是有点乱。

嵌套 if

因为 (if test-expression then-expression else-expression) 的部分 else if 将嵌套一个新的 if 作为 else-expression:

(if test-expression1
    then-expression1
    (if test-expression2
        then-expression2
        else-expression2))

使用条件

在其他语言中,else if 通常处于同一级别。在 lisps 中,我们有 cond。这与 cond:

完全相同
(cond (test-expression1 then-expression1)
      (test-expression2 then-expression2)
      (t else-expression2))

请注意,表达式可以就是这样。任何经常出现的表达式都像 (some-test-p some-variable),而其他表达式通常也是如此。它们很少只是要评估的单个符号,但它可以用于非常简单的条件。