【Ruby】[ ]またはnewを使った配列の生成方法まとめ


配列クラスの生成には、Arrayクラスのクラスメソッドである[]メソッドやnewメソッドの他に、配列式と呼ばれる記法もあるのですが、今回は[ ]またはnewを使った方法についてまとめてみました。勘違いしているところなどありましたらご教授お願いします。

[ ]を使った生成 - 配列リテラル

配列の生成(その1)

a = [1, 2, 3]
=> [1, 2, 3]

コメント欄より追記 18/05/02
上でArrayクラスのクラスメソッドの紹介と書いたのですが、こちらはクラスメソッドではなく、配列リテラルでした。失礼いたしました(_ _)

[ ]を使った生成

配列の生成(その2)

[ ] の引数に要素を指定。

Array[1, 2, 3]
=> [1, 2, 3]

コメント欄より追記 18/05/02
この書き方は、Arrayのサブクラスのインスタンスを作成しやすくするためのもの。
詳しくはRuby2.5のリファレンスか、下記のコメント欄をご覧ください。

newを使った生成

配列の生成(その3)

引数に配列の長さと、初期値を指定。

Array.new(2, 'hello')
=> ['hello', 'hello']

配列の生成(その4)

引数に配列を指定。
引数で渡された配列を複製する。

a = [1, 2, 3]
=> [1, 2, 3]

a.object_id
=> 70347435534940


arr = Array.new([1, 2, 3])
=> [1, 2, 3]

arr.object_id
=> 70347435491080

配列の生成(その5)

引数に配列の長さと、ブロックを指定。

Array.new(2){|i| i * 2}
=> [0, 2]