Code Fix

中級Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう › パターン3

Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう

Hash.new([])で作ったハッシュは、存在しないキーにアクセスするたびに同じ1つの配列オブジェクトを返します。

 1  logs = _____________________________
                         ^
 2  logs[:info] << "start"
 3  logs[:error] << "fail"
 4  puts logs[:info].inspect
出力: ["start", "fail"]

空欄を埋めて実行を通す

広告
広告スロット(未設定)

Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう

その配列を<<で変更すると、まだ触っていないはずの他のキーの値まで変わってしまいます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)