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


67

在elisp中,有一个'if'情况,我想执行许多不同的事情:

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

但是,(do-something-else)仅在其他情况下执行。您如何指定要执行的指令块?例如:

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

Answers:


87

用途progn

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

45

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

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

而且,相反

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

请查阅Emacs Lisp手册中的条件手册


2
FWIW,我通常遵循Common Lisp语言中使用的约定,when并且unless返回值不重要时(即,它们仅用于副作用)。我通常使用andor返回值很重要的时候。我通常使用ifcond有多个分支时(返回值是否重要)。
提请
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.