ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

Ruby - 配列の作り方いろいろ

Rubyでの配列の作り方

Array.new

array = Array.new
p array
array = Array.new(3)
p array
array = Array.new(5, 'Ruby')
p array
  • 何も指定しない
    • そのまま0個の配列ができる
  • 引数を1つだけ(数値)
    • その引数の数だけnilの要素が入った配列ができる
  • 引数を2つ
    • 1つの目の引数:要素数を指定
    • 2つの目の引数:格納したい値 で配列ができる
[]
[nil, nil, nil]
["Ruby", "Ruby", "Ruby", "Ruby", "Ruby"]

%w, %i

要素に空白が含まれていない、つまりそれぞれの区切りが明確になっている場合のみ、使える %w, %i

neta = %w(まぐろ サーモン えび かに うに)
p neta

neta2 = %i(まぐろ サーモン えび かに うに)
p neta2
["まぐろ", "サーモン", "えび", "かに", "うに"]
[:まぐろ, :サーモン, :えび, :かに, :うに]

%wは文字列の配列をつくりたいときに、%iは文字列がシンボルの配列となる。

to_a

配列の作り方としては、あまりメジャーでないがこれでもできなくはない、的なもの。 to_aは多くのクラスで定義されているメソッドでそれぞれのオブジェクトを配列に変換してくれる。

sushi_hash = {
    :maguro => ['まぐろ', 100],
    :salmon => ['サーモン', 120],
    :egg => ['たまご', 150]
}

sushi_array = sushi_hash.to_a

p sushi_array
[[:maguro, ["まぐろ", 100]], [:salmon, ["サーモン", 120]], [:egg, ["たまご", 150]]]

例ではハッシュを配列に変換している。

文字列split

あらゆる情報がカンマで句切られた一つの文字列をsplitメソッドで分割した結果が配列になるパターン。 わりと使われる手法。

person = "寿司太郎,男,まぐろが好き,2016-4-12"
profile = person.split(',')
p profile
["寿司太郎", "男", "まぐろが好き", "2016-4-12"]

参考

たのしいRuby 第5版

たのしいRuby 第5版