明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 786|回复: 4

[提问] 刚发现个其怪表的问题

[复制链接]
发表于 2021-6-17 13:15:42 | 显示全部楼层 |阅读模式
本帖最后由 taoyi0727 于 2021-6-17 13:28 编辑

(setq aaa (list "1" "2"))=====>'("1" "2")
(setq bbb (cons "1" "2"))==>'("1" . "2")
这样不相等可以理解


(setq aaa (list "1" "2"))=====>'("1" "2")
(setq bbb (cons "1" '("2")))==>'("1" "2")
(eq aaa bbb)
这样居然不相等

哦,找到问题了  用equal就好   居然犯这种低级问题eq判断约束的条件
equal判断值




"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-6-17 14:10:31 | 显示全部楼层
你就根本不懂 cons
cons 是 向表的头部添加一个元素,或构造一个点对 ,
点对
点对
点对

(cons 1 (cons 2 nil)) = (list 1 2)
(cons 1  2) /= (list 1 2)
发表于 2021-12-12 10:01:13 | 显示全部楼层
跟踪了一下list和cons,试验结果如下:
(cons 1 2)执行后内存中是:
D0 0C DB 12   00 00 00 00   03 00 00 00   05 00 00 00
数字1会变成3,数字2变成了5
D0 0C DB 12是个标记,表示是这数据结构是一个cons。它占用了16个字节(32位的acad2008)

(list 1 2)执行后内存中是:
D0 0C DB 12   00 00 00 00   03 00 00 00   28 6F 0C 13
D0 0C DB 12   00 00 00 00   05 00 00 00   00 00 00 00
它占用了32个字节,是两个cons组成的链表

(cons 2 nil)
D0 0C DB 12   00 00 00 00   05 00 00 00   00 00 00 00
(list 2)
D0 0C DB 12   00 00 00 00   05 00 00 00   00 00 00 00


(cons 2 nil)和(list 2)是完全等效的。

评分

参与人数 1明经币 +1 收起 理由
xtjd + 1 很给力!

查看全部评分

发表于 2021-12-12 12:32:35 | 显示全部楼层
问题出在eq,eq用在判断表的时候,是不是同一个表,而不是表相等。
发表于 2021-12-13 09:21:26 | 显示全部楼层
高手如云,膜拜。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 01:50 , Processed in 0.236279 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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