当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby BasicObject.equal?用法及代码示例


本文简要介绍ruby语言中 BasicObject.equal? 的用法。

用法

equal?(other) → true or false
eql?(other) → true or false
别名:==

相等 — 在 Object 级别,仅当 objother 是同一对象时, == 才返回 true。通常,在后代类中重写此方法以提供特定于类的含义。

== 不同, equal? 方法永远不应被子类覆盖,因为它用于确定对象身份(即 a.equal?(b) 当且仅当 ab 是相同的对象):

obj = "a"
other = obj.dup

obj == other      #=> true
obj.equal? other  #=> false
obj.equal? obj    #=> true

情商?如果 objother 引用相同的哈希键,则方法返回 true Hash 使用它来测试成员是否相等。对于 eql?返回 true ,两个对象的哈希值必须相等。那么任何覆盖 eql 的子类?还应该适当地覆盖散列。

对于类 Object 的对象,eql?与 == 同义。子类通常通过别名 eql?到他们重写的 == 方法,但也有例外。例如, Numeric 类型跨 == 执行类型转换,但不跨 eql? 执行类型转换,因此:

1 == 1.0     #=> true
1.eql? 1.0   #=> false

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 BasicObject.equal?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。