配列基礎レベル

次のプログラムを実行すると何が表示されますか?

charges = [3000, 1000, 2000]
backup = charges

charges.sort!

p backup
  • 1[3000, 1000, 2000]
  • 2[1000, 2000, 3000]
  • 3nil
  • 4NoMethodError が発生する

解説

backup = charges により、backupcharges と同じ配列オブジェクトを参照します。sort! は元配列を直接並べ替える破壊的メソッドなので、charges が参照する配列そのものが [1000, 2000, 3000] に変わります。同じ配列を参照している backup から見ても、並び替え後の配列が表示されます。

問題一覧へ戻る