我在Ruby中看到了很多相等的概念。
ivIcon
所有这些都有不同的语义。对我来说,它应该只有2个,一个是参考平等,另一个是价值平等。我不明白为什么Ruby需要==
eql?
===
equal?
和eql?
。
我发现this question表示区别仅在于值,值和类型。
具体来说,我不明白为什么===
需要检查类型(通常我们在Hash
方法本身进行测试)
答案 0 :(得分:2)
Hash
要求其密钥必须支持eql?
,因为它需要内部的哈希代码。
例如,1 == 1.0
为真,而1.eql? 1.0
为false。 1
和1.0
显然有不同的哈希码,因此不能将它们视为Hash
中的等效键。