Re: [Rails] 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@ruby-forum.com> 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@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
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@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
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.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home