Wie kann ich in Ruby eine Variable so kopieren, dass Änderungen am Original keine Auswirkungen auf die Kopie haben?
Zum Beispiel:
phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
In diesem Beispiel zeigen die beiden Variablen auf dasselbe Objekt. Ich möchte ein neues Objekt für die zweite Variable erstellen, aber es enthält anfangs dieselben Informationen.
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"
quelle