當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Object.dup用法及代碼示例


本文簡要介紹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-lang.org大神的英文原創作品 Object.dup。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。