U:RDoc::AnyMethod[iI"dup:ETI"Object#dup;TF:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"GProduces a shallow copy of obj---the instance variables of ;TI"@obj are copied, but not the objects they reference. ;TI"=dup
copies the tainted state of obj.;To:RDoc::Markup::BlankLine o;
; [I"@This method may have class-specific behavior. If so, that ;TI"Hbehavior will be documented under the #+initialize_copy+ method of ;TI"the class.;T@S:RDoc::Markup::Heading:
leveli: textI"on dup vs clone;T@o;
; [
I"LIn general, clone
and dup
may have different ;TI"Jsemantics in descendant classes. While clone
is used to ;TI"Iduplicate an object, including its internal state, dup
;TI"Itypically uses the class of the descendant object to create the new ;TI"instance.;T@o;
; [I"RWhen using #dup, any modules that the object has been extended with will not ;TI"be copied.;T@o:RDoc::Markup::Verbatim; [I"class Klass
;TI" attr_accessor :str
;TI" end
;TI"
;TI"module Foo
;TI" def foo; 'foo'; end
;TI" end
;TI"
;TI",s1 = Klass.new #=> #
;TI",s1.extend(Foo) #=> #
;TI"s1.foo #=> "foo"
;TI"
;TI"+s2 = s1.clone #=> #
;TI"s2.foo #=> "foo"
;TI"
;TI")s3 = s1.dup #=> #
;TI"Ms3.foo #=> NoMethodError: undefined method `foo' for #;T:@format0:
@fileI"
object.c;T:0@omit_headings_from_table_of_contents_below0I"obj.dup -> an_object
;T0[ I"();T@6FI"Object;TcRDoc::NormalClass00