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)
,而其他表达式通常也是如此。它们很少只是要评估的单个符号,但它可以用于非常简单的条件。
在 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)
,而其他表达式通常也是如此。它们很少只是要评估的单个符号,但它可以用于非常简单的条件。