两者有什么不同
你好(eq)和(equal)之间有什么不同?
一些代码会很棒:)
谢谢
S 您可以使用帮助文档阅读您想要的任何功能,并提供更好的解释。 两者均可用于比较数值;主要区别在于,虽然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 =、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)。
希望有帮助。干杯
杰夫! “认为应该使用后者(等于z nil)。”
为什么不(不是z) (不是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
喝倒采
页:
[1]