在elisp中,if语句逻辑只允许我使用if case和else。
(if (< 3 5)
; if case
(foo)
; else case
(bar))
但如果我想做别的话怎么办?我是否需要在else案例中添加新的if语句?它看起来有点乱。
答案 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))
在其他语言中,else if
通常位于同一级别。在lisps中,我们有cond
。这与cond
:
(cond (test-expression1 then-expression1)
(test-expression2 then-expression2)
(t else-expression2))
请注意,表达式可以就是这样。任何表达通常都是(some-test-p some-variable)
,其他表达通常也是如此。它们很少只是单个符号来评估,但它可以用于非常简单的条件。