配列基礎レベル
次のプログラムを実行すると何が表示されますか?
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! などは同様のペアを持ちます。