Ответ 1
Что касается копирования, вы можете сделать:
phrase2 = phrase1.dup
или
# Clone: copies singleton methods as well
phrase2 = phrase1.clone
Вы можете сделать это, чтобы избежать копирования вообще:
phrase2 = phrase1.gsub("Hello","Hi")
В Ruby, как я могу скопировать переменную, так что изменения в оригинале не влияют на копию?
Например:
phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
В этом примере две переменные указывают на один и тот же объект; Я хочу создать новый объект для второй переменной, но сначала должен содержать ту же информацию.
Что касается копирования, вы можете сделать:
phrase2 = phrase1.dup
или
# Clone: copies singleton methods as well
phrase2 = phrase1.clone
Вы можете сделать это, чтобы избежать копирования вообще:
phrase2 = phrase1.gsub("Hello","Hi")
Используя ваш пример, вместо:
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"