Love U Ruby
2013-Sep-21 22:32 UTC
Need help to understand the difference between #dup and #clone while working singleton methods
Look the below code with Object#clone: foo = Object.new def foo.bar "hi" end baz = foo.clone foo.bar # => "hi" baz.bar # => "hi" Now with Object#dup foo = Object.new def foo.bar "hi" end baz = foo.dup foo.bar # => "hi" baz.bar # `<main>'': undefined method `bar'' for #<Object:0x989b378> (NoMethodError) Why the below part didn''t work. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/df21c6695a428cad5b46941018158f1c%40ruby-forum.com. For more options, visit https://groups.google.com/groups/opt_out.
Narrenblut .
2013-Sep-23 00:36 UTC
Re: Need help to understand the difference between #dup and #clone while working singleton methods
I''d think, the difference in following example shows easier, where is the difference in you case, too foo = [1,2] bar= foo.dup foo<< 3 puts bar.inspect foo= [ [1,2] ] bar = foo.dup foo[0] << 3 puts bar.inspect Try it with clone - and you recognize the difference between deep copy clone and shallow copy dup In your case you only get a Object.new where you set: baz = foo.dup On Sun, Sep 22, 2013 at 12:32 AM, Love U Ruby <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Look the below code with Object#clone: > > foo = Object.new > def foo.bar > "hi" > end > baz = foo.clone > foo.bar # => "hi" > baz.bar # => "hi" > > Now with Object#dup > > foo = Object.new > def foo.bar > "hi" > end > baz = foo.dup > foo.bar # => "hi" > baz.bar # `<main>'': undefined method `bar'' for #<Object:0x989b378> > (NoMethodError) > > Why the below part didn''t work. > > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/df21c6695a428cad5b46941018158f1c%40ruby-forum.com > . > For more options, visit https://groups.google.com/groups/opt_out. >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAC%2BiCjPJT0i1O8kyvWHHG4tswD7j5VRJsqg5rgjqcBKkZDKLkQ%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.