Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在比较密钥时,Ruby的Hash使用哪种相等性测试?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个围绕一些对象的包装类,我想用它作为哈希中的键.包装和解包对象应映射到同一个键. @H_675_2@一个简单的例子是:

class A
  attr_reader :x
  def initialize(inner)
    @inner=inner
  end
  def x; @inner.x; end
  def ==(other)
    @inner.x==other.x
  end
end
a = A.new(o)  #o is just any object that allows o.x
b = A.new(o)
h = {a=>5}
p h[a] #5
p h[b] #nil,should be 5
p h[o] #nil,should be 5
@H_675_2@我试过==,===,eq?哈希都无济于事.

@H_772_8@

解决方法

@H_675_2@所以…

class A
  attr_reader :x
  def initialize(inner)
    @inner=inner
  end
  def x; @inner.x; end
  def ==(other)
    @inner.x==other.x
  end

  def eql?(other)
    self == other
  end

  def hash
    x.hash
  end
end
@H_772_8@ @H_772_8@

大佬总结

以上是大佬教程为你收集整理的在比较密钥时,Ruby的Hash使用哪种相等性测试?全部内容,希望文章能够帮你解决在比较密钥时,Ruby的Hash使用哪种相等性测试?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。