本文简要介绍ruby语言中 Module.obj ==
的用法。
用法
obj == other → true or false
equal?(other) → true or false
eql?(other) → true or false
相等 — 在 Object
级别,仅当 obj
和 other
是同一对象时, ==
才返回 true
。通常,在后代类中重写此方法以提供特定于类的含义。
与 ==
不同, equal?
方法永远不应被子类覆盖,因为它用于确定对象身份(即 a.equal?(b)
当且仅当 a
与 b
是相同的对象):
obj = "a"
other = obj.dup
obj == other #=> true
obj.equal? other #=> false
obj.equal? obj #=> true
如果 obj
和 other
引用相同的哈希键,则 eql?
方法返回 true
。 Hash
使用它来测试成员是否相等。对于 eql?
返回 true
的任何一对对象,两个对象的 hash
值必须相等。因此,任何覆盖 eql?
的子类也应该适当地覆盖 hash
。
对于 Object
类的对象, eql?
与 ==
是同义词。子类通常通过将 eql?
别名为其重写的 ==
方法来延续这一传统,但也有例外。例如, Numeric
类型跨 ==
执行类型转换,但不跨 eql?
执行类型转换,因此:
1 == 1.0 #=> true
1.eql? 1.0 #=> false
相关用法
- Ruby Module.attr_accessor用法及代码示例
- Ruby Module.method_removed用法及代码示例
- Ruby Module.private用法及代码示例
- Ruby Module.deprecate_constant用法及代码示例
- Ruby Module.instance_method用法及代码示例
- Ruby Module.class_variables用法及代码示例
- Ruby Module.included_modules用法及代码示例
- Ruby Module.singleton_class?用法及代码示例
- Ruby Module.module_exec用法及代码示例
- Ruby Module.included用法及代码示例
- Ruby Module.include?用法及代码示例
- Ruby Module.ruby2_keywords用法及代码示例
- Ruby Module.module_eval用法及代码示例
- Ruby Module.extend_object用法及代码示例
- Ruby Module.class_exec用法及代码示例
- Ruby Module.autoload用法及代码示例
- Ruby Module.ancestors用法及代码示例
- Ruby Module.class_variable_get用法及代码示例
- Ruby Module.class_variable_defined?用法及代码示例
- Ruby Module.method_defined?用法及代码示例
- Ruby Module.new用法及代码示例
- Ruby Module.const_missing用法及代码示例
- Ruby Module.instance_methods用法及代码示例
- Ruby Module.autoload?用法及代码示例
- Ruby Module.used_modules用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Module.obj ==。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。