Macro OR
or
form* => result*
form - フォーム
result - 多値か、最後のformの実行した結果の第一返却値(下記参照)か、 nil
or
は、各formを左から右へひとつずつ評価します。 すべてのfromの評価は、formのどれかの評価が true(それはnil
以外のなにか)を返却したときに停止します。
もし最後以外の各formの評価の第一返却値がtrueのときは、 or
は残りのformを評価することなく 即座にその値(しかし多値は追加しません)を返却します。 もし最後以外のすべてのformが第一返却値にfalseを返却したとき、 or
は最後のformの全ての多値を返却します。 formがないときは、nil
を返却します。
or) => NIL
(setq temp0 nil temp1 10 temp2 20 temp3 30) => 30
(or temp0 temp1 (setq temp2 37)) => 10
(=> 20
temp2 or (incf temp1) (incf temp2) (incf temp3)) => 11
(=> 11
temp1 => 20
temp2 => 30
temp3 or (values) temp1) => 11
(or (values temp1 temp2) temp3) => 11
(or temp0 (values temp1 temp2)) => 11, 20
(or (values temp0 temp1) (values temp2 temp3)) => 20, 30 (
なし。
なし。
なし。
なし。