在elisp中,if语句逻辑只允许我使用if case和else case.
(if (< 3 5)
; if case
(foo)
; else case
(bar))
Run Code Online (Sandbox Code Playgroud)
但如果我想做别的话怎么办?我是否需要在else案例中添加新的if语句?它看起来有点乱.
Syl*_*ter 18
由于各部分(if test-expression then-expression else-expression)的else if将是巢新if作为else-expression:
(if test-expression1
then-expression1
(if test-expression2
then-expression2
else-expression2))
Run Code Online (Sandbox Code Playgroud)
在其他语言中,else if通常是在同一水平上.在lisps我们有cond这个.这与以下内容完全相同cond:
(cond (test-expression1 then-expression1)
(test-expression2 then-expression2)
(t else-expression2))
Run Code Online (Sandbox Code Playgroud)
请注意,表达式可以就是这样.任何表达通常都是这样的(some-test-p some-variable),其他表达通常也是如此.它们很少只是被评估的单个符号,但它可以用于非常简单的条件.