我在ruby中看到了很多平等的概念。
==
eql?
===
equal?
它们都有不同的语义。对我来说,应该只有两个,一个是参考平等,另一个是价值平等。我不明白为什么ruby需要
eql?
和===
。我找到了this question这个词,意思是区别只是价值,价值和类型。
具体来说,我不明白为什么
Hash
也需要检查类型(通常我们在==
方法本身中测试) 最佳答案
Hash
要求其键必须支持eql?
,因为它在内部需要散列代码。
例如,1 == 1.0
为真,1.eql? 1.0
为假。1
和1.0
显然有不同的散列码,因此在aHash
中不能将它们视为等价键。
关于ruby - 为什么Ruby哈希使用eql?而不是==,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29867123/