如何在 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 中建议的约定,即在返回值不重要时使用when
和unless
(即使用它们)仅用于副作用)。当返回值很重要时,我一般使用and
和or
。我一般在有多个分支时使用if
和cond
(不管返回值是否重要)。以上是关于如何在 elisp 'if' 语句中编写多个语句?的主要内容,如果未能解决你的问题,请参考以下文章