- 配列ってどうやって作成するの?
- どんな作成方法があるの?
Arrayクラスメソッドのまとめ、、、を記事にしようと思ったのですが長くなりそうなので分割。
配列の生成方法だけにまとめました。
[]を使った生成
# []を使った生成
a = [1,2,3]
p a #>= [1, 2, 3]
# Arrayクラスの確認
p a.class #>= Array
Arrayの引数に[]
# Arrayの引数に[]
b = Array[1,2,3]
p b #>= [1, 2, 3]
newメソッドを使った生成方法
配列の長さと初期値を設定した生成
これで生成した場合、全ての要素のobject_idが同じになるため値更新時注意!
まとめて更新される可能性があります。
#newメソッド使った生成
# 配列の長さと初期値を設定
c = Array.new(3, "abc")
p c #>= ["abc", "abc", "abc"]
配列を指定した生成
# 配列を指定する
d = Array.new([1,2,3])
p d #>= [1, 2, 3]
実験的に、「配列をしていた生成」+「配列の長さと初期値を設定した生成」を組み合わせてみた。
結果は、以下の通り。
結果は、以下の通り。
2次元配列になって、各要素に指定した配列が挿入される形。
さらに、objectIdは全て同一となるので更新時にも注意が必要となる
e = Array.new(3, [1,2,3])
p e #>= [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
p e[0].object_id #>= 70310482064100
p e[1].object_id #>= 70310482064100
p e[2].object_id #>= 70310482064100
配列の長さとブロックを渡して生成する方法
# 配列の長さとブロックを渡す
f = Array.new(3) {|i| i + 1}
p f #>= [1,2,3]
パーセント記法を使った生成
%w、%Wを使った生成
要素が空白を含まない文字列の配列を生成する。
””や,を省力できる書き方。
%wは、シングルクォートで配列作成。式展開が出来ない。
%Wは、ダブルクォートで配列作成。式展開が出来る。
# %wを使った生成
g = %w(1 2 3 #{3+1})
p g #>= ["1", "2", "3", "\#{3+1}"]
g2 = %W(1 2 3 #{3+1})
p g2 #>= ["1", "2", "3", "4"]
%iを使った生成
要素が空白を含まない文字列の配列を生成するのは、%wと一緒。
違いはシンボルで配列が作成されること
# %i
h = %i(1 2 3)
p h #>= [:"1", :"2", :"3"]
to_aメソッドを使った生成
ハッシュから配列を生成する方法。
キーと値のペアから配列の配列が作成される。
# ハッシュ生成
i = {a:1, b:2}
p i #>= {:a=>1, :b=>2}
# ハッシュから配列に変換
p i.to_a #>= [[:a, 1], [:b, 2]]
文字列のsplitメソッドを使った生成
j = "1_2_3"
p j.split("_")
まとめ
- []を使う
- Array[]を使う
- Array.newを使う
- パーセント記法を使う
- to_aメソッドを使う
- splitメソッドを使う
配列を生成するだけでも様々な方法があります。
基本的な[]だけでもいいっちゃいいのですが、色々な生成方法を知っておくその時その時にあった効率的かつシンプルなプログラミングが出来ますよ。
その他のメソッドについては、以下の記事にまとめてみました!