乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 50|回复: 6

[编程交流] 两者有什么不同

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:16:10 | 显示全部楼层 |阅读模式
你好
 
(eq)和(equal)之间有什么不同?
 
一些代码会很棒:)
 
谢谢
S
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:35:00 | 显示全部楼层
您可以使用帮助文档阅读您想要的任何功能,并提供更好的解释。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:43:40 | 显示全部楼层
两者均可用于比较数值;主要区别在于,虽然EQ仅验证相同的项目,但EQUAL允许使用精度因子进行比较:
  1. (eq    1.52548 1.52578)         [color=blue];return nil[/color]
  2. (equal 1.52548 1.52578)         [color=blue];return nil[/color]
  3. (equal 1.52548 1.52578 0.001)   [color=blue];return true[/color]
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 23:48:34 | 显示全部楼层
=、eq和equal是三个非常不同的东西,如果我可以添加一些注释来进一步解释一些非常重要的差异的话。。
 
正如M.Sasu所说,你可以用一个等于的模糊因子来检查数值。。知道并记住这是一件非常好的事情。
 
------------------------
 
=用于比较数值,但不能包括任何模糊因子。就像在十进制中,1/3不能精确地用小数表示(0.3333333),同样的情况也可以在二进制中发生,下面是一个例子
由于CAD检查16位数字,我们可以用最小的模糊因子检查等式
  1. (equal 6.0 (- 8.2 2.2) 0.000000000000001) => T
------------------------
如果两个参数的计算结果相同,Equal将返回T。例如,让我们把一些东西放在几个变量中。以下所有内容都将返回相同的内容。
  1. 3

因为它们都计算为(A B C),所以它们都是相等的。
 
 
------------------------
 
另一方面,只有当两个参数有界于同一事物时,Eq才会返回T。使用前面定义的变量。。
只有x和z被绑定到同一事物。(setq z x)。
偶数(eq’(A B C)'(A B C))返回零。
 
------------------------
 
有时,用一个代替另一个可能没有副作用,但不理解其中的区别,使用错误的方法就像掷硬币一样。您最终可能会出现意外的行为和难以调试的时间。
我不确定是否每个人都同意,但即使使用三个(=/eq/equal)中的任何一个将不存在的变量与零进行比较,也会返回T。。。
我认为应该使用后者(等于z nil)。
 
希望有帮助。干杯
杰夫!
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:00:34 | 显示全部楼层
“认为应该使用后者(等于z nil)。”
 
为什么不(不是z)
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 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
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:17:53 | 显示全部楼层
 
喝倒采
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:39 , Processed in 0.617782 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表