如何在 elisp 'if' 语句中编写多个语句?

Posted

技术标签:

【中文标题】如何在 elisp \'if\' 语句中编写多个语句?【英文标题】:How can you write multiple statements in elisp 'if' statement?如何在 elisp 'if' 语句中编写多个语句? 【发布时间】:2010-10-29 01:56:58 【问题描述】:

在 elisp 中,有一个“如果”的情况,我想执行许多不同的事情:

(if condition
    (do-something)
    (do-something-else)
    ...)

但是,(do-something-else) 仅在 else-case 中执行。如何指定要执行的指令块?例如:

(if condition
    (begin
        (do-something)
        (do-something-else)
        ...))

【问题讨论】:

【参考方案1】:

使用progn:

(if condition
    (progn
        (do-something)
        (do-something-else)))

【讨论】:

【参考方案2】:

如果不需要else,则使用起来可能更具可读性:

(when condition
    (do-something)
    (do-something-else))

反之亦然

(unless (not condition)
    (do-something)
    (do-something-else))

查看Emacs Lisp manual for conditionals。

【讨论】:

FWIW,我通常遵循 Common Lisp The Language 中建议的约定,即在返回值不重要时使用whenunless(即使用它们)仅用于副作用)。当返回值很重要时,我一般使用andor。我一般在有多个分支时使用ifcond(不管返回值是否重要)。

以上是关于如何在 elisp 'if' 语句中编写多个语句?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度 9 中为多个 if else 语句编写测试用例

如何在三元运算符中编写多个语句?

如何在python中为一个if语句设置多个条件[重复]

java if语句

如何编写更好的 SQL 语句进行数据验证

在“if”语句中有多个布尔条件?