equal (AutoLISP)

2 つの式の評価結果が等しいかどうかを調べます。

サポートされているプラットフォーム: Windows および Mac OS

構文と要素

(equal expr1 expr2 [fuzz])
expr1

タイプ: 整数、実数、文字列、リスト、T、nil、ads_name

比較する式。

expr2

タイプ: 整数、実数、文字列、リスト、T、nil、ads_name

expr1 と比較する式。

fuzz

タイプ: 整数または実数

expr1expr2 が等しいと判断される両者の相違の最大値を定義する実数。

戻り値

タイプ: T または nil

2 つの式が等しい(同じ値に評価)場合は T、それ以外の場合は nil

注意

2 つの実数(または点を示す 2 つの実数のリストなど)を比較した場合、数値的に等しくても、計算方法が異なると、わずかな違いが生じることがあります。fuzz 引数を指定することにより、異なる計算方法の結果として生じた違いを吸収することができます。

eq 関数と equal 関数を比較する

eq 関数が同一と判定したリストやアトムは、equal 関数を使用しても常に等しいと判定されます。

equal 関数が等しいと判定したアトムは、eq 関数でも同一と判定されます。しかし、equal 関数が等しいと判定したリストは、eq 関数では同一ではないと判定されることがあります。

まず、次のように割り当てます。

(setq f1 '(a b c)) 
(setq f2 '(a b c)) 
(setq f3 f2)
(setq a 1.123456) 
(setq b 1.123457)

次に、f1f3 を比較します。

(equal f1 f3)
T

f3f2 を比較すると、次のようになります。

(equal f3 f2)
T

ab を比較します。

(equal a b)
nil

ab の変数は、0.000001 異なっています。0.000001 の fuzz 引数を使用して ab を比較します。

(equal a b 0.000001)
T

ab の値の違いは指定された fuzz の値と等しいので、equal 関数は両方の値を等しいと判定します。