File: C:/Ruby27-x64/share/ri/2.7.0/system/Object/dup-i.ri
U:RDoc::AnyMethod[iI"dup:ETI"Object#dup;TF:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"GProduces a shallow copy of <i>obj</i>---the instance variables of ;TI"?<i>obj</i> are copied, but not the objects they reference.;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"AIn general, #clone and #dup may have different semantics in ;TI"Fdescendant classes. While #clone is used to duplicate an object, ;TI"Hincluding its internal state, #dup typically uses the class of the ;TI"2descendant object to create the new 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 #=> #<Klass:0x401b3a38>
;TI",s1.extend(Foo) #=> #<Klass:0x401b3a38>
;TI"s1.foo #=> "foo"
;TI"
;TI"+s2 = s1.clone #=> #<Klass:0x401b3a38>
;TI"s2.foo #=> "foo"
;TI"
;TI")s3 = s1.dup #=> #<Klass:0x401b3a38>
;TI"Ms3.foo #=> NoMethodError: undefined method `foo' for #<Klass:0x401b3a38>;T:@format0:
@fileI"
object.c;T:0@omit_headings_from_table_of_contents_below0I"obj.dup -> an_object
;T0[ I"();T@4FI"Object;TcRDoc::NormalClass00