我有一个带有一些成员变量的 Foo 类。当类的两个实例中的所有值都相等时,我希望对象“相等”。然后我希望这些对象成为我的哈希中的键。当我当前尝试此操作时,哈希将每个实例视为不相等。
h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
此时 f1 和 f2 应相等。
h[f1] = 7
h[f2] = 8
puts h[f1]
应该打印 8
See Hash http://ruby-doc.org/core/classes/Hash.html:
哈希用途key.eql?
测试按键
平等。如果您需要使用实例
你自己的类作为键Hash
,
建议您定义两者
这eql?
and hash
方法。哈希值
方法必须具有以下属性a.eql?(b)
暗示a.hash == b.hash
.
The eql?
方法很容易实现:return true
如果所有成员变量都相同。为了hash
方法、用途[@data1, @data2].hash
正如马克-安德烈在评论中建议的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)