ruby:配列(Array)操作の基本

配列の基本操作。

>> names = ['Luf','Zor','Nam']                                                                                  
=> ["Luf", "Zor", "Nam"]
>> names[0]
=> "Luf"
>> names.size
=> 3
>> names[4] = 'Uso'
=> "Uso"
>> names
=> ["Luf", "Zor", "Nam", nil, "Uso"]
>> names.push('San')
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]

イテレータを使用した操作。

# イテレータ(繰り返しメソッド)
>> names.each do |n|
?>   puts n
>> end
Luf
Zor
Nam

Uso
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]


# 別の配列にセット
# conpact:nilを取り除く
>> names_a = names.map {|n| n}.compact
=> ["Luf", "Zor", "Nam", "Uso", "San"]
>> names_a
=> ["Luf", "Zor", "Nam", "Uso", "San"]
>> names
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]


# eachで埋め返す場合は手間がかかるのでmap推奨
>> names_b = []
=> []
>> names.each {|n| names_b << n}
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]
>> names_b
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]


# each_with_index
>> names.each_with_index {|n, i| puts n + ':' + i.to_s if n.present? }
Luf:0
Zor:1
Nam:2
Uso:4
San:5
=> ["Luf", "Zor", "Nam", nil, "Uso", "San"]


# select ブロックで評価した値が真だった要素を全て含む配列を返す
>> names_a.select {|n| n.include?("a")}                                                                         
=> ["Nam", "San"]

文字列からの配列作成。

# 文字列から配列作成
>> sea = %w[east west center]
=> ["east", "west", "center"]

# 文字列から配列作成(symbolとして作成)
>> sea = %i[east west center]
=> [:east, :west, :center]