找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 915|回复: 13

[研讨] eq和= 有差别吗?

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-12-19 14:01:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
equal 只要求内容相同就行,eq要求指向同一对象。
那么eq和= 有差别吗?

评分

参与人数 1D豆 +5 收起 理由
yularna + 5 出题引导交流奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 14:35:59 | 显示全部楼层
The eq function determines whether expr1 and expr2 are bound to the same object (by setq, for example).

Given the following assignments:

(setq f1 '(a b c))
(setq f2 '(a b c))
(setq f3 f2)
Compare f1 and f3:

Command: (eq f1 f3)

nil

eq returns nil because f1 and f3, while containing the same value, do not refer to the same list.

Compare f3 and f2:

Command: (eq f3 f2)

T

eq returns T because f3 and f2 refer to the same list.

点评

如果eq 和 =是一样的,那为什么要搞两个函数出来?  详情 回复 发表于 2014-12-19 14:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-12-19 14:43:11 | 显示全部楼层
newer 发表于 2014-12-19 14:35
The eq function determines whether expr1 and expr2 are bound to the same object (by setq, for exampl ...

如果eq 和 =是一样的,那为什么要搞两个函数出来?{:soso_e113:}

点评

还是有差别的 命令: (eq "a" "a" "a") ; 错误: 参数太多 命令: (= "a" "a" "a") T  详情 回复 发表于 2014-12-19 14:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 14:46:46 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-12-19 14:43
如果eq 和 =是一样的,那为什么要搞两个函数出来?

还是有差别的

命令: (eq "a" "a" "a")
; 错误: 参数太多
命令: (= "a" "a" "a")
T

点评

这样说来,eq是多余的?有=就够了。  详情 回复 发表于 2014-12-19 14:54

评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5 及时回复奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-12-19 14:52:04 | 显示全部楼层
我知道<是可以多个参数的,怎么就没想到.....

点评

不好意思,让你这个帖子这么快就结束了,开个玩笑。 其他朋友还发现有什么不同,再跟帖吧。  详情 回复 发表于 2014-12-19 14:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-12-19 14:54:44 | 显示全部楼层
newer 发表于 2014-12-19 14:46
还是有差别的

命令: (eq "a" "a" "a")

这样说来,eq是多余的?有=就够了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 14:59:26 | 显示全部楼层

不好意思,让你这个帖子这么快就结束了{:soso_e113:},开个玩笑。

其他朋友还发现有什么不同,再跟帖吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-19 15:11:27 | 显示全部楼层
eq 比较 expression (表达式)
= 比较 A number or a string. (数字或文字,其实也可以 Object  variant)
equal 比较表达式,可以有精度




_$ (setq a '(lambda (x) (+ x 1))
(_> )
(LAMBDA (X) (+ X 1))
_$ (setq b '(lambda (x) (+ x 2)))
(LAMBDA (X) (+ X 2))
_$ (= 'a 'b)
nil
_$ (eq a b)
nil
_$ (= a b)
nil
_$ (equal a b)
nil
_$ (setq b '(lambda (x) (+ x 1)))
(LAMBDA (X) (+ X 1))
_$ (equal a b)
T
_$ (eq a b)
nil
(LAMBDA (X) (+ X 1))
#<USUBR @12d833fc -lambda->
nil
T
T
nil
nil
_$ (= a b)
nil
_$

评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5 还是说明了eq是可有可无的东西?

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 229个

财富等级: 日进斗金

发表于 2014-12-19 19:49:09 | 显示全部楼层
本帖最后由 yularna 于 2014-12-19 19:59 编辑

=(等于)
用途:比较参数是否相等
(= numstr [numstr] …)
参数
numstr 数值型或字符串型。
返回值
如果所有参数相等则返回T;否则返回nil 。如果仅提供一个参数,函数返回T。
样例
(= 4 4.0)
T
(= 20 388)
nil
(= 2.4 2.4 2.4)
T
(= 499 499 500)
nil
(= ”me” ”me")
T
(= ”me” ”you”)
nil
eq
用途:确定两个表达式是否具有相同的约束条件
(eq exprl expr2)
eq 函数确定表达式exprl 和expr2 是否设置为同一对象(例如,用setq 函数设置)。
参数
exprl 用于比较的表达式。
expr2 与exprl 进行比较的表达式。
返回值
如果表达式相同则返回T,否则返回nil .
样例
给定如下指令:
(setq fl '(a b c))
(setq f2 '(a b c))
(setq f3 f2)
比较f1 和f2:
命令: (eq f1 f3)  
nil
因为f1 和f2虽然值相同, 但不指向同一个表,所以eq 返回nil。
比较f3 和f2:
命令:(eq f3 f2)
T
因为f3 和f2 指向同一个表,所以eq 返回T。
equal
用途:确定两个表达式的误差是否[在最大允许范围内]相等
(equal exprl expr2 [fuzz])
参数
exprl 用于比较的表达式。
expr2 与exprl 进行比较的表达式。
fuzz 实数,定义exprl 和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 变量之间的差值为0.000001。
将a 与b 比较,其中fuzz 参数设为0.000001:
命令: (equal a b 0.000001)
T
由于a 和b 变量之间的差值等于指定的fuzz 值,所以equal 认为两个变量相等。
比较eq 和equal 函数
eq函数认为相等的两个表或原子, equal 函数一定也认为它们相等。
equal 认为相等的两个原子, eq 一定也认为它们相等。但equal 认为相等的两个表,eq不一定认为它们相等。

点评

eq对=号说“既生瑜何生亮”  详情 回复 发表于 2014-12-19 20:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-12-19 20:05:52 来自手机 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2014-12-22 08:15 编辑
yularna 发表于 2014-12-19 19:49
=(等于)
用途:比较参数是否相等
(= numstr [numstr] …)

eq对=号说“既生瑜何生亮”,你怎么说的与8楼Free-Lancer的相反?

点评

所有的对象(什么是对象?)都可以eq,而只有值(什么是值?)才可以=,所以能eq的未必=。 可以多个值=,但只能两个对象eq,所以能=的未必eq  详情 回复 发表于 2014-12-19 20:29
AutoLISP里面所有的对象(什么是对象?)都可以eq,而只有值(什么是值?)才可以=。  详情 回复 发表于 2014-12-19 20:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 229个

财富等级: 日进斗金

发表于 2014-12-19 20:12:42 | 显示全部楼层
本帖最后由 yularna 于 2014-12-19 20:28 编辑
/db_自贡黄明儒_ 发表于 2014-12-19 20:05
eq对=号说“既生瑜何生亮”

所有的对象(什么是对象?)都可以eq,而只有值(什么是值?)才可以=,所以能eq的未必=。

可以多个值=,但只能两个对象eq,所以能=的未必eq

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 229个

财富等级: 日进斗金

发表于 2014-12-19 20:29:21 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-12-19 20:05
eq对=号说“既生瑜何生亮”

所有的对象(什么是对象?)都可以eq,而只有值(什么是值?)才可以=,所以能eq的未必=。

可以多个值=,但只能两个对象eq,所以能=的未必eq
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-20 14:31:31 | 显示全部楼层
eq对比内存位置,=对比求值结果

点评

也不完全对啊, (eq "2" "2") 是相等的,内存肯定不是一个位置。  详情 回复 发表于 2014-12-20 15:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-20 15:21:04 | 显示全部楼层
无痕 发表于 2014-12-20 14:31
eq对比内存位置,=对比求值结果

也不完全对啊, (eq "2" "2") 是相等的,内存肯定不是一个位置。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 13:19 , Processed in 0.383294 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表