2009-05-26 5 views
58

В Elisp, есть «если» случай, когда я хотел бы выполнить много различных вещей:Как вы можете написать несколько операторов в инструкции elisp 'if'?

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

Однако, (сделай кое-то еще) выполняется в единственном еще-случае. Как указать блок выполнения команд? Например:

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

ответ

71

Использование progn:

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

Если есть не требуется else, это может быть более удобным для чтения использовать:

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

И есть обратное

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

Проверьте номер Emacs Lisp manual for conditionals.

+2

FWIW Я обычно придерживаюсь принципа, предложенного в * Common Lisp. Язык * использования 'when' и' if', когда возвращаемое значение не имеет значения (т. Е. Они используются только для побочных эффектов). Обычно я использую 'and' и' or', когда значение возврата является важным. Обычно я использую 'if' и' cond', когда есть несколько ветвей (важно или нет значение возврата). – Drew

Смежные вопросы