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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。