Ruby:如何在不指向同一对象的情况下复制变量?
在Ruby中,如何复制一个变量,使对原始变量的更改不会影响副本 例如:Ruby:如何在不指向同一对象的情况下复制变量?,ruby,Ruby,在Ruby中,如何复制一个变量,使对原始变量的更改不会影响副本 例如: phrase1 = "Hello Jim" phrase2 = phrase1 phrase1.gsub!("Hello","Hi") p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim" 在这个例子中,两个变量指向同一个对象;我想为第二个变量创建一个新对象,但它最初包含相同的信息。使用您的示例,而不是: phrase2 = phrase1 尝试: 至
phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
在这个例子中,两个变量指向同一个对象;我想为第二个变量创建一个新对象,但它最初包含相同的信息。使用您的示例,而不是:
phrase2 = phrase1
尝试:
至于复制,您可以执行以下操作:
phrase2 = phrase1.dup
或
您也可以这样做以避免复制:
phrase2 = phrase1.gsub("Hello","Hi")
你的回答适用于我提出的问题,这个问题相当笼统。不过,这似乎对我真正想解决的问题不起作用,这就是:。有什么想法吗?顺便说一句,谢谢你的帮助。:)回答问题时,请解释您的解决方案有帮助的原因。这会教育提出问题的人,使他们能够理解并避免将来的问题。
# Clone: copies singleton methods as well
phrase2 = phrase1.clone
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"