在 Ruby 中,我怎样才能复制一个变量,这样对原始变量的更改就不会影响复制?
例如:
phrase1 = "Hello Jim" phrase2 = phrase1 phrase1.gsub!("Hello","Hi") p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
在这个例子中,两个变量指向同一个对象; 我想为第二个变量创建一个新对象,但是让它最初包含相同的信息。
Using your example, instead of:
phrase2 = phrase1
Try:
phrase2 = phrase1.dup
As for copying you can do:
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")
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"