誰でもその行動を説明できますか
シナリオ-1
str = "hello"
str1 = str
puts str #=> hello
puts str1 #=> hello
str1 = "hi"
puts str1 #=> hi
puts str #=> hello
ここで、 の値を変更しても の値にstr1
は影響しませんstr
。
シナリオ-2
str = "hello"
str1 = str
str1.gsub! "hello", "whoa!"
puts str1 #=> whoa
puts str #=> whoa
gsub!
効果だけじゃないのstr1
?なぜ変化しているのstr
ですか?str1
への参照のみを保持している場合、シナリオ 1str
で値が変更されなかったのはなぜですか?