Ruby:如何在不指向同一对象的情况下复制变量?

Nat*_*ong 61 ruby

在Ruby中,如何复制变量以使原始更改不影响副本?

例如:

phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,两个变量指向同一个对象; 我想为第二个变量创建一个新对象,但最初它包含相同的信息.

khe*_*lll 96

至于复制你可以这样做:

phrase2 = phrase1.dup
Run Code Online (Sandbox Code Playgroud)

要么

# Clone: copies singleton methods as well
phrase2 = phrase1.clone
Run Code Online (Sandbox Code Playgroud)

您也可以这样做以避免复制:

phrase2 = phrase1.gsub("Hello","Hi")
Run Code Online (Sandbox Code Playgroud)


Jac*_*inn 19

使用您的示例,而不是:

phrase2 = phrase1
Run Code Online (Sandbox Code Playgroud)

尝试:

phrase2 = phrase1.dup
Run Code Online (Sandbox Code Playgroud)