Macro AND
and
form* => result*
form - フォーム
result - 最後のformの評価の結果の値か、 シンボルのnil
かt
。
マクロand
は、各formを左から右へひとつずつ評価します。 どれかのformの評価がnil
を返却したとき、 and
は残りのformを評価せず すぐにnil
を返却します。 もし最後以外の全てのformがtrueの値であれば、 and
は、最後のformの評価によって生成された結果を返却します。
formがないときは、(and)
はt
を返却します。
if (and (>= n 0)
(< n (length a-simple-vector))
(eq (elt a-simple-vector n) 'foo))
(princ "Foo!")) (
上記の式は、もし提供されたn
がa-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 (
なし。
なし。
and form) == (let () form)
(and form1 form2 ...) == (when form1 (and form2 ...)) (