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