a = []
a = Array.new
arr = [1, 2, 3]
arr = ['aaa', 'bbb', 'ccc']
arr = [0] * 5 # => [0, 0, 0, 0, 0]
arr = Array.new(5, 0) # => [0, 0, 0, 0, 0]
単語の配列を作りたい場合は、%w を使用すると、それぞれの単語をクォーテーションで囲まなくても済み、単語間のカンマも必要なくなります(逆に、カンマを入れてしまうと、カンマも値として含まれてしまうのでカンマは入力してはいけません)。
arr = %w{aaa bbb ccc} #=> ["aaa", "bbb", "ccc"]
注意: %w{
の3文字の間にスペースが入ると構文エラーになります。
Range#to_a
を使って、ある範囲の数値の羅列を作成できます。
さらに step
を組み合わせて使用することで、飛び飛びの値からなる配列を簡単に作成することができます。
arr = (1..5).to_a # => [1, 2, 3, 4, 5]
arr = (1...5).to_a # => [1, 2, 3, 4]
arr = 10.step(0, -2).to_a # => [10, 8, 6, 4, 2, 0]
Range#map
(Range#collect
) を使うと、数値の羅列を加工しながら配列を作成することができます。
arr = (1..5).map # => [1, 2, 3, 4, 5] # これをやるなら (1..5).to_a で!
arr = (1..5).map {|x| x*2} # => [2, 4, 6, 8, 10]
以下のように実行するよりも、シンプルなコードで配列を作成できます。
arr = []
1.upto(5) {|i| arr << i}
Range
オブジェクトでも同様のことができますが、配列に対しても、各要素の値を加工しながら新しい配列を作成することができます(!
のついたバージョンを使用すれば、自分自身の要素を書き換えることができます)。
arr.collect {|x| ...} => arr
arr.collect! {|x| ...}
arr.map {|x| ...} => arr
arr.map! {|x| ...}
[1, 2, 3, 4, 5].map {|x| x**2} # => [1, 4, 9, 16, 25]