環境
ruby 2.4.1p111
連想配列
sample.rb
#連想配列の宣言
colors = { Black: "#000000", Navy: "#000080", DarkBlue: "#00008B", MediumBlue: "#0000CD"}
#キーを渡して、配列値を取得するには以下のように取得する
puts colors[:Black]
#キーを追加する場合
colors["Blue"] = "#0000FF"
#配列の数を求める場合
puts colors.length
#空か判定する場合
puts colors.empty?
#キーが含まれるか:
colors.has_key?(:Black)
#繰り返し処理(each)
# (ブロック引数を省略すると、Enumeratorオブジェクトが返ってくる)
colors.each
#(結果)
=> #<Enumerator: {:Black=>"#000000", :Navy=>"#000080", :DarkBlue=>"#00008B", :MediumBlue=>"#0000CD", "Blue"=>"#0000FF"}:each>
# 以下のようにブロックを指定して繰り返し処理を行える
colors.each {|color_name, color_val| puts "#{color_name}\t#{color_val}" }
#(結果)
Black #000000
Navy #000080
DarkBlue #00008B
MediumBlue #0000CD
Blue #0000FF
#連想配列のキーのみ繰り返し(each_key)
colors.each_key {|color_name| puts "#{color_name}" }
#(結果)
Black
Navy
DarkBlue
MediumBlue
Blue
#連想配列の値のみ繰り返し(each_value)
colors.each_value{|color_val| puts "#{color_val}" }
#(結果)
#000000
#000080
#00008B
#0000CD
#0000FF
#連想配列を検索
colors.select {|color_key, color_val| color_val == "#000080"}
#(結果)
=> {:Navy=>"#000080"}
#繰り返し処理を実行して、結果を配列にして返す
plices = { Apple: 120, Orange: 150, Grape: 360}
tax_inc_plicess = plices.collect{|k, v| (v * 1.08).to_i}
puts tax_inc_plicess
#(結果)
129
162
388
#連想配列をマージする
# 果物
fluets = { Apple: 120, Orange: 150, Grape: 360}
# 野菜
vegetables= { carrot: 300, potato: 180, onion: 200}
# 果物と野菜をマージして、結果を出力
flts_and_vegets = fluets .merge(vegetables)
puts flts_and_vegets
#(結果)
{:Apple=>120, :Orange=>150, :Grape=>360, :carrot=>300, :potato=>180, :onion=>200}