确定两个表达式的值是否相等
(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 不一定认为它们相等。
参阅
明经通道 版权所有 未经许可 不得传播 | 评论 |