samifox 发表于 2022-7-5 23:16:10

两者有什么不同

你好
 
(eq)和(equal)之间有什么不同?
 
一些代码会很棒:)
 
谢谢
S

Tharwat 发表于 2022-7-5 23:35:00

您可以使用帮助文档阅读您想要的任何功能,并提供更好的解释。

MSasu 发表于 2022-7-5 23:43:40

两者均可用于比较数值;主要区别在于,虽然EQ仅验证相同的项目,但EQUAL允许使用精度因子进行比较:
(eq    1.52548 1.52578)         ;return nil
(equal 1.52548 1.52578)         ;return nil
(equal 1.52548 1.52578 0.001)   ;return true

Jef! 发表于 2022-7-5 23:48:34

=、eq和equal是三个非常不同的东西,如果我可以添加一些注释来进一步解释一些非常重要的差异的话。。
 
正如M.Sasu所说,你可以用一个等于的模糊因子来检查数值。。知道并记住这是一件非常好的事情。
 
------------------------
 
=用于比较数值,但不能包括任何模糊因子。就像在十进制中,1/3不能精确地用小数表示(0.3333333),同样的情况也可以在二进制中发生,下面是一个例子
由于CAD检查16位数字,我们可以用最小的模糊因子检查等式
(equal 6.0 (- 8.2 2.2) 0.000000000000001) => T------------------------
如果两个参数的计算结果相同,Equal将返回T。例如,让我们把一些东西放在几个变量中。以下所有内容都将返回相同的内容。
3
因为它们都计算为(A B C),所以它们都是相等的。
 
 
------------------------
 
另一方面,只有当两个参数有界于同一事物时,Eq才会返回T。使用前面定义的变量。。
只有x和z被绑定到同一事物。(setq z x)。
偶数(eq’(A B C)'(A B C))返回零。
 
------------------------
 
有时,用一个代替另一个可能没有副作用,但不理解其中的区别,使用错误的方法就像掷硬币一样。您最终可能会出现意外的行为和难以调试的时间。
我不确定是否每个人都同意,但即使使用三个(=/eq/equal)中的任何一个将不存在的变量与零进行比较,也会返回T。。。
我认为应该使用后者(等于z nil)。
 
希望有帮助。干杯
杰夫!

Snownut 发表于 2022-7-6 00:00:34

“认为应该使用后者(等于z nil)。”
 
为什么不(不是z)

Jef! 发表于 2022-7-6 00:08:40

(不是z)可以使用。。(null z)也可以使用:Not验证项的计算结果是否为nil,而null验证项是否绑定到nil。然而,这是另一场辩论。)
即使有很多方法可以做到这一点,这也不是重点。
这个线程是关于差异等于/eq/(=),这句话是关于“使用三个(=/eq/equal)中的任何一个将不存在的变量与零进行比较”。
 
 
我还说,我不确定每个人都会同意,因为例如在我自己的例子中,我不同意自己的观点。(哈哈哈)
原因是:如果not和null看起来都合适,这意味着计算结果为零/绑定到零都是正确的。
(等于z nil)=>检查z是否计算为nil
(等式z nil)=>检查z是否绑定到nil
这意味着(eq z nil)在我之前的例子中也是正确的,但(在我的头脑中)只是因为我将z绑定到nil(setq z nil)。但是在eq/equal/=之间,我会使用equal来检查一个不存在的变量,因为我的逻辑告诉我,不存在的东西不能与任何东西绑定,因为它不存在。。。即使null的唯一目的是进行这种验证,并引用我自己的话“null验证一个项目绑定到nil”(意味着任何不存在的变量绑定到nil…哦好的)^o^
 
 
请不要让我和自己打架;P

Snownut 发表于 2022-7-6 00:17:53

 
喝倒采
页: [1]
查看完整版本: 两者有什么不同