ruby2.1.1の環境において、以下のようなコードを実行します。
ruby
1hashA={"test"=>"aaaa"} 2arrayA=Array.new 3#ハッシュを配列に格納 4arrayA.push(hashA) 5p hashA 6#配列に投入したハッシュの値を変更 7arrayA[0]["test"]="bbbb" 8p hashA
実行結果
{"test"=>"aaaa"} {"test"=>"bbbb"}
arrayA.push(hashA)
を実行したときにhashAそのものが配列に渡されているようで、
配列の中の値を変更したときにhashAそのものの値も変更されてしまっています。
配列の中にはhashAのコピーを渡して、
配列の中を更新しても、hashAそのものは更新させたくないのですが、どのように記述すればよいでしょうか?
また、rubyは基本値渡しであると理解しているのですが、なぜこのような参照渡しのような動作をするのでしょうか?
どうぞよろしくお願いします!!
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。