为什么Ruby哈希使用eql?而不是==

时间:2015-04-25 15:28:34

标签: ruby hash

我在Ruby中看到了很多相等的概念。

ivIcon

所有这些都有不同的语义。对我来说,它应该只有2个,一个是参考平等,另一个是价值平等。我不明白为什么Ruby需要== eql? === equal? eql?

我发现this question表示区别仅在于值,值和类型。

具体来说,我不明白为什么===需要检查类型(通常我们在Hash方法本身进行测试)

1 个答案:

答案 0 :(得分:2)

Hash要求其密钥必须支持eql?,因为它需要内部的哈希代码。

例如,1 == 1.0为真,而1.eql? 1.0为false。 11.0显然有不同的哈希码,因此不能将它们视为Hash中的等效键。