チェリー本 5章 その1
ハッシュ
本当は第4章をじっくり満遍なくやりたかったのですが
チェリー本を広く短期間で全体の章を触れたかったので
一部飛ばしてきました。笑
必ずまた戻ってきます。
きっと...
超rubyで難しく感じたので
取り組んでいこうと思いました。
そもそもハッシュって???
ハッシュはキーと値の組み合わせでデータを管理するオブジェクトのこと。
ハッシュの構文になります。
{} #キーと値の組み合わせを2つ格納するハッシュ {"キー1"=>"値1","キー2"=>"値2"} #国ごとの通貨と単位を格納したハッシュ { "japan" => "en", "us" => "dollar", "india" => "rupee" } #もちろん改行して記載可能 { "japan" => "en", "us" => "dollar", "india" => "rupee", } #最後に,がついてもエラーにはならない。
要素の追加、取得、削除
追加
新しいキーと値を追加する時の構文
ハッシュ[キー] = 値
ここでは新しくイタリアの通貨を追加します。
currencies = { "japan" => "en", "us" => "dollar", "india" => "rupee" } currencies["italy"] = "euro" p currencies => {"japan"=>"en", "us"=>"dollar", "india"=>"rupee", "italy"=>"euro"} #またすでに存在していた場合は上書きされる。 currencies["japan"] = "円" p currencies => {"japan"=>"円", "us"=>"dollar", "india"=>"rupee", "italy"=>"euro"}
取得
キーを取得する時の構文
ハッシュ[キー]
以下はインドの通貨を取得します。
ハッシュの内部構造上キーと値が大量に格納されていても
指定した値を高速で取り出すことができる。
p currencies["india"] => "rupee"
また存在しないキーを指定するとnilがかえる
削除
deleteメソッドを使うと指定したキーに対応する要素を削除できる。
currencies = { "japan" => "en", "us" => "dollar", "india" => "rupee" } currencies.delete("japan") p currencies => {"us"=>"dollar", "india"=>"rupee"}
ハッシュを使った繰り返し処理
eachを使うとキーと値の組み合わせ順で取り出すことができる。
キーと値は格納順に取り出されます。
またブロック引数が2つあることも気をつける。
currencies = { "japan" => "en", "us" => "dollar", "india" => "rupee" } currencies.each { |key, value| puts "#{key}:#{value}" } => japan:en us:dollar india:rupee