Elisp:我怎么能表达else-if

时间:2016-11-19 15:06:23

标签: lisp elisp

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

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

但如果我想做别的话怎么办?我是否需要在else案例中添加新的if语句?它看起来有点乱。

1 个答案:

答案 0 :(得分:14)

嵌套

由于(if test-expression then-expression else-expression)else if的部分将if作为else-expression嵌套:

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

使用cond

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

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

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