ハッシュ

Ruby ハッシュ値をeachで繰り返し処理してみよう

Rubyのハッシュ値のeachでの繰り返し処理について。

2通りの使い方があるのでご紹介致します。

まずは、ハッシュ値からkeyとvalueを取得するパターンです。

capitals = {
  'Japan'          => 'Tokyo', 
  'UnitedKingdom'  => 'London', 
  'Netherlands'    => 'Amsterdam', 
  'France'         => 'Paris'
}
# ここはおまけ
p capitals['UnitedKingdom'] # => "London"
p capitals['Switzerland']   # => nil (値がない場合)

capitals.each do |key, value|
  puts "国は#{key}です。首都は#{value}です"
end
# => 国はJapanです。首都はTokyoです
# => 国はUnitedKingdomです。首都はLondonです
# => 国はNetherlandsです。首都はAmsterdamです
# => 国はFranceです。首都はParisです

今回はサンプルなので、keyとvalueという名前にしていますが
countryとcapitalとかにしたほうが可読性は上がるかもしれませんね。

次は配列として処理をする場合です。
配列の0番目にkey、1番目にvalueが入ります。

capitals.each do |capital|
  puts "国は#{capital[0]}です。首都は#{capital[1]}です"
end
# => 国はJapanです。首都はTokyoです
# => 国はUnitedKingdomです。首都はLondonです
# => 国はNetherlandsです。首都はAmsterdamです
# => 国はFranceです。首都はParisです

どうでしょうか???

配列のアクセスが少し面倒な感じですね。笑

自分で実装する場合は前者のほうがいいと思います(*^^*)

 

何かの参考になれば幸いです(*^^*)

Rubyでハッシュ値の有無チェックをしてみよう

ハッシュ値の有無チェック has_key? を使ってみよう!

data = {:country => 'Japan', :town => 'Tokyo', :station => nil}

このデータがあるときに、countryがある場合に処理をしたいと言うときは

以下のような書き方をします。

if data.has_key?(:country)
    # お好みの処理を…
end

 

これで判定するケースは多そうなので便利ですねっ。