Macro AND

UP


Macro AND

Macro AND

構文

and form* => result*

引数と戻り値

form - フォーム
result - 最後のformの評価の結果の値か、 シンボルのnilt

定義

マクロandは、各formを左から右へひとつずつ評価します。 どれかのformの評価がnilを返却したとき、 andは残りのformを評価せず すぐにnilを返却します。 もし最後以外の全てのformtrueの値であれば、 andは、最後のformの評価によって生成された結果を返却します。

formがないときは、(and)tを返却します。

例文

(if (and (>= n 0)
         (< n (length a-simple-vector))
         (eq (elt a-simple-vector n) 'foo))
    (princ "Foo!"))

上記の式は、もし提供されたna-simple-vectorへの有効なインデックスであり、 かつa-simple-vectorの要素nがシンボルfooのときはFoo!が印字されます。 andは、その部分が左から右へテストされることが保証されているので、 もしnが範囲外のときはeltが呼び出されません。

(setq temp1 1 temp2 1 temp3 1) =>  1 
(and (incf temp1) (incf temp2) (incf temp3)) =>  2 
(and (eql 2 temp1) (eql 2 temp2) (eql 2 temp3)) =>  true
(decf temp3) =>  1 
(and (decf temp1) (decf temp2) (eq temp3 'nil) (decf temp3)) =>  NIL 
(and (eql temp1 temp2) (eql temp2 temp3)) =>  true
(and) =>  T 

影響

なし。

例外

なし。

参考

cond, every, if, or, when

備考

(and form) == (let () form)
(and form1 form2 ...) == (when form1 (and form2 ...))

TOP, Github