我在ruby中看到了很多平等的概念。

==
eql?
===
equal?

它们都有不同的语义。对我来说,应该只有两个,一个是参考平等,另一个是价值平等。我不明白为什么ruby需要eql?===
我找到了this question这个词,意思是区别只是价值,价值和类型。
具体来说,我不明白为什么Hash也需要检查类型(通常我们在==方法本身中测试)

最佳答案

Hash要求其键必须支持eql?,因为它在内部需要散列代码。
例如,1 == 1.0为真,1.eql? 1.0为假。11.0显然有不同的散列码,因此在aHash中不能将它们视为等价键。

关于ruby - 为什么Ruby哈希使用eql?而不是==,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29867123/

10-10 10:24