【发布时间】:2009-04-20 22:55:25
【问题描述】:
我知道 eql 吗? Hashes 使用它来查看一个对象是否与 key* 匹配,而你这样做
def ==(rb)
如果您想支持 == 运算符,但必须有充分的理由让哈希不使用 == 代替。这是为什么?你什么时候有 == 和 eql 的定义? 不等效(例如,一个是另一个的别名)?
同理,为什么除了to_a还要to_ary?
这个问题是为了回应某人在another question 上给我的answer。
*当然,一个Hash也假设eql? == true 表示哈希码相等。
另外,重写 equal 基本上是一个可怕的想法吗? ?
【问题讨论】: