配列基礎レベル

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

arr = ["c", "a", "b"]
new_arr = arr.sort
p arr
p new_arr
  • 1["a", "b", "c"] と ["a", "b", "c"]
  • 2["c", "a", "b"] と ["a", "b", "c"]
  • 3["c", "a", "b"] と ["c", "a", "b"]
  • 4["a", "b", "c"] と ["c", "a", "b"]

解説

sort は非破壊的メソッドです。元の配列 arr は変更されず、ソート済みの新しい配列が戻り値として返されます。そのため p arr["c", "a", "b"]p new_arr["a", "b", "c"] と表示されます。

元の配列を直接書き換えたい場合は sort! を使います。Rubyでは末尾に ! がつくメソッドが破壊的操作であることが多く、sort / sort!map / map!reverse / reverse! などは同様のペアを持ちます。

問題一覧へ戻る