Arrayオブジェクトとは?
いわゆる「配列」のことで、複数のオブジェクトを格納できるオブジェクトです。
irb(main):039:0> [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
Array の操作
push メソッドを使うと末尾にオブジェクトを追加できます。
irb(main):040:0> arr = []
=> []
irb(main):041:0> arr.push(100)
=> [100]
他にも末尾に追加する記法があるので紹介します。
irb(main):046:0> arr = []
=> []
irb(main):047:0> arr << 100
=> [100]
Array にオブジェクトを代入
まず、普通に Array を作ってみます。シングルクォートで囲った文字列を Array に格納してみます。
irb(main):052:0> arr = ['String1', 'String']
=> ["String1", "String"]
irb(main):053:0> arr
=> ["String1", "String"]
でもシングルクォートを度々書くのも面倒なので %w%[] という記法があります。
irb(main):057:0> arr = %w[String1 String2]
=> ["String1", "String2"]
irb(main):058:0> arr
=> ["String1", "String2"]
先ほどと同じ結果になっていることが分かりますね。
%w で囲われた配列では、要素はシングルクォートで囲う必要がなく
スペースで区切ってあげるだけでOKとなります。
Array の処理
each メソッド
each メソッドを使うと配列の各要素を取り出せます。
irb(main):064:1* arr.each do |i|
irb(main):065:1* puts i
irb(main):066:0> end
1
2
3
4
5
=> [1, 2, 3, 4, 5]
map メソッド
map メソッドを使うと、配列の各要素を加工した配列を新たに作ることができます。
例えば各要素に「2」を掛けた配列にするにはこのように書きます。
irb(main):068:0> arr = [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
irb(main):069:0> arr.map { |i| i*2 }
=> [2, 4, 6, 8, 10]
多重代入
次のような記法により、配列の各要素を変数に格納をすることができます。
irb(main):074:0> arr = [1, 2]
=> [1, 2]
irb(main):075:0> foo, bar = arr
=> [1, 2]
irb(main):076:0> foo
=> 1
irb(main):077:0> bar
=> 2
foo, bar それぞれに配列の 0 番目、1番目が格納されていることが分かるかと思います。