Ruby 〜Arrayオブジェクト覚書〜

Arrayとは

Arrayは一般的に配列とも呼ばれ、開発で頻繁に使われる重要なオベジェクトで
複数のオブジェクトを格納できるオブジェクトです。

Arrayオブジェクトの生成
[1] pry(main)> []
=> []
[2] pry(main)> [1,2,3]
=> [1, 2, 3]
[3] pry(main)> [1,'文字',1.5]
=> [1, "文字", 1.5]
[4] pry(main)> 

[1]が空のArrayオブジェクトの生成
[2]が複数個の整数値を格納したArrayオブジェクトの生成
[3]が異なる複数のオブジェクトを格納したArrayオブジェクトの生成
また、配列内の「,」で区切ったものを「要素と呼ぶ」
イメージ ⇨ { 要素1 , 要素2 , 要素3 }

要素の追加
[4] pry(main)> arry = []
=> []
[5] pry(main)> arry.push('一つ目')
=> ["一つ目"]
[6] pry(main)> arry << '二つ目'
=> ["一つ目", "二つ目"]
[7] pry(main)> 
%記法について
[7] pry(main)> ['文','字']
=> ["文", "字"]
[8] pry(main)> %w[文 字]
=> ["文", "字"]
[9] pry(main)> 

[7]と[8]は同じ動作結果であるが、書き方が異なる。[8]が%記法と呼ばれる書き方である。
[8]の%wの場合、要素と要素をスペースで区切ることで結果として要素をダブルクオートで囲われたArrayオブジェクトが生成される。
は別の記号を使用できるが、規約的にブラケットを使用することが推奨されている。
参考までに別の記号での書き方は以下の通りである。

[9] pry(main)> %w!文 字!
=> ["文", "字"]
[10] pry(main)> %w(文 字)
=> ["文", "字"]
[11] pry(main)> 

また、%wの「w」を大文字にすることで変数を展開すること出来る。

[11] pry(main)> one = 1
=> 1
[12] pry(main)> two = 2
=> 2
[13] pry(main)> %W[a#{one},b#{two}]
=> ["a1,b2"]
[14] pry(main)> 
Symbolを作る%記法について
[14] pry(main)> %i[a b c]
=> [:a, :b, :c]
[15] pry(main)> 
配列での繰り返し処理について

eachオブジェクトを使用することで配列の中身を取り出して処理することが出来る。

[15] pry(main)> %w[あ い う].each do |str|
[15] pry(main)*   puts str
[15] pry(main)* end  
あ
い
う
=> ["あ", "い", "う"]
[16] pry(main)>

また、繰り返しの処理は「break」を書くことで途中終了させる事が出来る。

[16] pry(main)> %w[あ い う].each do |str|
[16] pry(main)*   break if str == 'う'
[16] pry(main)*   puts str
[16] pry(main)* end  
あ
い
=> nil
[17] pry(main)> 

繰り返し処理で一部スキップ処理をさせたい場合は「next」を使用する。

[17] pry(main)> %w[あ い う].each do |str|
[17] pry(main)*   next if str == 'い'
[17] pry(main)*   puts str
[17] pry(main)* end  
あ
う
=> ["あ", "い", "う"]
[18] pry(main)> 

mapメソッドを使う事で各要素を加工した配列を生成する事が出来る。

[18] pry(main)> %w[あ い う].map { |str| "(#{str})" }
=> ["(あ)", "(い)", "(う)"]
[19] pry(main)> 
多重代入について

別々の変数に値を代入する事が可能。

[19] pry(main)> foo, bar = [1,2]
=> [1, 2]
[20] pry(main)> foo
=> 1
[21] pry(main)> bar
=> 2

もし用意した変数と代入値が異なる場合は以下のようになる。
用意した変数 > 代入値 ⇨ 代入値がない変数には「nil」が代入される。
nil」は値無しの意味である。
用意した変数 < 代入値 ⇨ 代入されなかった値は無視される。

[22] pry(main)> foo,bar = 1
=> 1
[23] pry(main)> foo
=> 1
[24] pry(main)> bar
=> nil
[25] pry(main)> foo,bar = [1,2,3]
=> [1, 2, 3]
[26] pry(main)> foo
=> 1
[27] pry(main)> bar
=> 2
[28] pry(main)> 

以上Ruby Arrayオブジェクト覚書でした〜