本文簡要介紹ruby語言中 Object.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 Object.instance_variable_get用法及代碼示例
- Ruby Object.display用法及代碼示例
- Ruby Object.remove_instance_variable用法及代碼示例
- Ruby Object.define_singleton_method用法及代碼示例
- Ruby Object.methods用法及代碼示例
- Ruby Object.public_send用法及代碼示例
- Ruby Object.xmp用法及代碼示例
- Ruby Object.singleton_methods用法及代碼示例
- Ruby Object.enum_for用法及代碼示例
- Ruby Object.freeze用法及代碼示例
- Ruby Object.inspect用法及代碼示例
- Ruby Object.method用法及代碼示例
- Ruby Object.DelegateClass用法及代碼示例
- Ruby Object.instance_of?用法及代碼示例
- Ruby Object.nil?用法及代碼示例
- Ruby Object.instance_variable_defined?用法及代碼示例
- Ruby Object.singleton_class用法及代碼示例
- Ruby Object.kind_of?用法及代碼示例
- Ruby Object.send用法及代碼示例
- Ruby Object.itself用法及代碼示例
- Ruby Object.to_enum用法及代碼示例
- Ruby Object.__id__用法及代碼示例
- Ruby Object.is_a?用法及代碼示例
- Ruby Object.instance_variable_set用法及代碼示例
- Ruby Object.extend用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Object.obj ==。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。