2009-05-26 2 views
58

In elisp gibt es ein 'wenn' Fall, wo ich viele verschiedene Dinge durchführen möchten:Wie können Sie mehrere Anweisungen in elisp 'if' Anweisung schreiben?

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

jedoch (do-something-else) nur in dem sonst Fall ausgeführt wird. Wie können Sie einen Anweisungsblock angeben, der ausgeführt werden soll? Zum Beispiel:

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

Antwort

71

Verwendung progn:

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

Wenn es keine else ist erforderlich, könnte es besser lesbar sein zu verwenden:

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

Und es gibt das Gegenteil

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

Schauen Sie sich die Emacs Lisp manual for conditionals.

+2

FWIW, ich folge allgemein der Konvention in * Common Lisp Die Sprache * der Verwendung von 'wann' und' außer wenn' der Rückgabewert ist nicht wichtig (d. H. Sie werden nur für Nebenwirkungen verwendet). Ich verwende im Allgemeinen "und" und "oder", wenn der Rückgabewert wichtig ist. Ich verwende im Allgemeinen "if" und "cond", wenn es mehrere Zweige gibt (ob der Rückgabewert wichtig ist oder nicht). – Drew