我想知道为什么在Common中没有内置的相等操作符来比较CLOS对象(标准类)。例如,"equalp“可以应用于数组、结构、哈希表,但不能应用于对象。
我假设有一个新的测试,它下降一个对象,并检查槽值是否等于程序员,但是我想知道这是否有一个不属于标准的原因,因为我认为这是一个相当常见的事情?例如,“make-散列表”的测试函数似乎必须是内置函数之一,因此,我不太清楚如何将对象用作哈希表中的键或值。
*我注意到有一个相关的问题(使用Common对象作为哈希表中的键?),但它并没有真正回答我的问题。
谢谢,干杯!
我
发布于 2016-07-18 22:14:21
我不能给出一个明确的答案,但我怀疑部分原因是历史:CLOS是在equalp规范定稿后添加到ANSI的。
注意,equalp按照您的预期在structure-object上工作。还请注意,结构有一个可读打印语法,而克洛斯物体缺少它。
,但,这可能不是人们最初可能认为的那么大的疏忽。
CLOS对象可以是相对较重的;考虑到插槽存取器是属函数,求出对象相等可以快速地转移到比较函数上。
https://stackoverflow.com/questions/38445914
复制相似问题