In Ruby, how can I copy a variable such that changes to the original don\'t affect the copy?
For example:
phrase1 = \"Hello Jim\"
phrase2 = phrase1
p
Using your example, instead of:
phrase2 = phrase1
Try:
phrase2 = phrase1.dup
phrase1 = "Hello Jim"
# => "Hello Jim"
phrase2 = Marshal.load(Marshal.dump(phrase1))
# => "Hello Jim"
phrase1.gsub!("Hello","Hi")
# => "Hi Jim"
puts phrase2
# "Hello Jim"
puts phrase1
# "Hi Jim"
As for copying you can do:
phrase2 = phrase1.dup
or
# Clone: copies singleton methods as well
phrase2 = phrase1.clone
You can do this as well to avoid copying at all:
phrase2 = phrase1.gsub("Hello","Hi")