比較関数

等しい

AutoLISP関数
(= item [item] ...)
item:アトム、リスト
引数を比較して、等しいかどうかを判断します。
戻り値:nil、またはnil 以外
AutoLISP関数
(/= item [item] ...)
item:アトム、リスト
引数を比較して、等しくないかどうかを判断します。
戻り値:nil、またはnil 以外

= 関数は、隣りあう item 引数がすべてにおいて等しい場合は nil 以外を、等しくない場合はnil を返します。/= 関数は、隣りあう item 引数がすべてにおいて異なる場合は nil 以外を返します。まわりくどい言い方ですが、三つ以上の引数が与えられた場合、次のようなコードと同等になります。

(= i1 i2 i3) ⇒ (and (= i1 i2) (= i2 i3))
(/= i1 i2 i3) ⇒ (and (/= i1 i2) (/= i2 i3))

このことは、/= 関数の場合では直感と異なるので注意してください。

_$ (/= 1 0 0)
nil
_$ (/= 0 1 0)
T
_$ (/= 0 0 1)
nil

= 関数と /= 関数は数値の比較に使えるほか、文字列やシンボル名の比較にも使えます。

_$ (= 2.0 (+ 1.0 1.0)) ⏎
T
_$ (/= 2.0 (+ 1.0 1.0)) ⏎
nil
_$ (= "AutoCAD" (strcat "Auto" "CAD"))⏎
T
_$ (/= "AutoCAD" (strcat "Auto" "CAD"))⏎
nil
_$ (= 'AutoCAD (read "AUTOCAD"))
T
_$ (/= 'AutoCAD (read "AUTOCAD"))
nil

リストの場合は、次のように、比較の方法が eq 関数と等しい「同一性」の比較となります。

_$ (= '(1) '(1))⏎		;別のリスト(内容は等しい)の比較
nil
_$ (setq a '(1)) ⏎
(1)
_$ (setq b a) ⏎
(1)
_$ (= a b) ⏎ ;同一のリストの比較
T

大きい・小さい

AutoLISP関数
(< numstr [numstr] ...)
numstr:整数、実数、または文字列
各引数がその右側の引数よりも数値的に小さい場合は T を返し、それ以外の場合は nil を返します。
戻り値:nil、またはnil 以外
AutoLISP関数
(<= numstr [numstr] ...)
numstr:整数、実数、または文字列
各引数がその右側の引数よりも数値的に小さいか等しい場合は T を返し、それ以外の場合は nil を返します。
戻り値:nil、またはnil 以外
AutoLISP関数
(> numstr [numstr] ...)
numstr:整数、実数、または文字列
各引数がその右側の引数よりも数値的に大きい場合は T を返し、それ以外の場合は nil を返します。
戻り値:nil、またはnil 以外
AutoLISP関数
(>= numstr [numstr] ...)
numstr:整数、実数、または文字列
各引数がその右側の引数よりも数値的に大きいか等しい場合は T を返し、それ以外の場合は nil を返します。
戻り値:nil、またはnil 以外

それぞれの一般的な使い方は以下のとおりとなります。

_$ (< 1 2)⏎
T
_$ (<= 1 1) ⏎
T
_$ (> 1 2) ⏎
nil
_$ (>= 1 1) ⏎
T

二つ以上の引数をとることができ、すべての順において関係が成り立つときに nil 以外を返します。

_$ (< 1 2 3 4) ⏎
T
_$ (< 1 2 4 3) ⏎
nil
_$ (<= 1 2 2 3) ⏎
T
_$ (<= 1 2 1 3) ⏎
nil

引数には文字列をとることもでき、その場合は、文字コードの大小で対応する文字が順に比較されます。

_$ (< "A" "B")⏎
T
_$ (< "Aa" "Ab")⏎
T

負・ゼロ

AutoLISP関数
(minusp number)
number:整数、または実数
数値が負かどうかを調べます。
戻り値:nil、またはnil 以外

minusp関数は、引数が0 以上ならばnil を返します。

_$ (minusp 1) ⏎
nil
_$ (minusp -1) ⏎
T
_$ (minusp 0) ⏎
nil

比較関数の < や > でも同じことができます。number 引数が数値以外の場合はエラーが発生します。

AutoLISP関数
(zerop number)
number:整数、または実数
数値がゼロかどうかを調べます。
戻り値:nil、またはnil 以外

zerop 関数は、引数がゼロ以外の場合はnil を返します。

_$ (zerop 0) ⏎
T
_$ (zerop 1) ⏎
nil

比較関数の=でも同じことができます。number 引数が数値以外の場合はエラーが発生します。

誤差

= 関数でも同様ですが、実数を扱っている際には計算誤差が生じ、理論的に 0.0 になる場合でも zerop 関数はわずかな誤差も許容せず、完全に 0.0 の場合のみ nil 以外を返しますので、配慮が必要です。equal 関数を使う必要があるか、常に注意してください。実数に対しては、zerop 関数を使うべきではありません。