本文簡要介紹ruby語言中 Object.dup
的用法。
用法
dup → an_object
生成 obj
的淺拷貝——複製 obj
的實例變量,但不複製它們引用的對象。
此方法可能具有特定於類的行為。如果是這樣,該行為將記錄在該類的 # initialize_copy
方法下。
重複與克隆
通常, clone
和 dup
在後代類中可能具有不同的語義。 clone
用於複製對象,包括其內部狀態,而 dup
通常使用後代對象的類來創建新實例。
使用 dup
時,不會複製已擴展對象的任何模塊。
class Klass
attr_accessor :str
end
module Foo
def foo; 'foo'; end
end
s1 = Klass.new #=> #<Klass:0x401b3a38>
s1.extend(Foo) #=> #<Klass:0x401b3a38>
s1.foo #=> "foo"
s2 = s1.clone #=> #<Klass:0x401be280>
s2.foo #=> "foo"
s3 = s1.dup #=> #<Klass:0x401c1084>
s3.foo #=> NoMethodError: undefined method `foo' for #<Klass:0x401c1084>
相關用法
- Ruby Object.display用法及代碼示例
- Ruby Object.define_singleton_method用法及代碼示例
- Ruby Object.instance_variable_get用法及代碼示例
- Ruby Object.remove_instance_variable用法及代碼示例
- 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.obj ==用法及代碼示例
- 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-lang.org大神的英文原創作品 Object.dup。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。