明经通道 AutoLISP 函数  
equal
 

确定两个表达式的值是否相等

(equal expr1 expr2 [fuzz]) 

参数

expr1

用于比较的表达式。

expr2

与 expr1 进行比较的表达式。

fuzz

实数,定义 expr1 和 expr2 之间的最大允许误差。误差在此范围内时,仍然认为二者相等。

当比较两个实数(或由实数组成的表,如点表)时,即使是恒等的两个数,如果采用不同的计算方法,结果也有可能稍有差别。可以指定 fuzz 值,以避免由于计算方法不同而导致的误差。

返回值

如果两个表达式相等(等于同一个数值)则返回 T,否则返回 nil。

示例

给定如下指令:

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

将 f1 与 f3 比较:

命令: (equal f1 f3)

T

将 f3 与 f2 比较:

命令: (equal f3 f2)

T

将 a 与 b 比较:

命令: (equal a b)

nil

a 和 b 变量之间的差值为 .000001。

将 a 与 b 比较,其中 fuzz 参数设为 .000001:

命令: (equal a b 0.000001)

T

由于 a 和 b 变量之间的差值等于指定的 fuzz 值,所以 equal 认为两个变量相等。

比较 eq 和 equal 函数

eq 函数认为相等的两个表或原子,equal 函数一定也认为它们相等。

equal 认为相等的两个原子,eq 一定也认为它们相等。但 equal 认为相等的两个表 eq 不一定认为它们相等。

参阅

= (等于)eq 函数。

明经通道 版权所有 未经许可 不得传播

 评论