1. ホーム
  2. ruby

Ruby: 同じオブジェクトを指すことなく変数をコピーするにはどうしたらいいですか?

2023-10-07 20:59:17

質問

Rubyで、元の変数への変更がコピーに影響しないように変数をコピーするにはどうしたらよいでしょうか。

例えば

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

この例では、2つの変数が同じオブジェクトを指しています。2番目の変数のために新しいオブジェクトを作成したいのですが、最初は同じ情報を含むようにします。

どのように解決するのですか?

コピーについては、可能です。

phrase2 = phrase1.dup

または

# Clone: copies singleton methods as well
phrase2 = phrase1.clone

これも全くコピーしないようにすればいいのです。

phrase2 = phrase1.gsub("Hello","Hi")