プログラミング学習中で、これはメモしたいと思ったものを、自分用に分かりやすく残しておきます。
そもそもハッシュとは
ハッシュというのは「データ」とそれに対応する「名前」のセットを要素として持つ値のことを言います。
コードで記述すると以下のようなものを指します。
vegetables = {"avocado": "300円", "broccoli": "250円", "edamame": "200円"}
この記述でいきますと、
- アボガドは、300円
- ブロッコリーは、250円
- 枝豆は、200円
というように、セットになっております。
そして、ハッシュにおいては、データをバリュー、それに対応する名前をキーと呼びます。
2重ハッシュとは
バリューに当たる部分もハッシュ状態になっている状態のことです。
状態としては、以下のようなものを指します。
my_favorite_foods = {vegetable: {green: {name: "broccoli"}}}
これを分解していきますと、
vegetable
というキーとセットになのが、green: {name: "broccoli"}
というバリュー。
その中のgreen
というキーとセットなのが、name: "broccoli"
というバリュー。
その中のname
というキーとセットなのが、"broccoli"
というバリュー。
という状態なのが分かります。
2重ハッシュの値の取り出し方
値の取り出し方は、2次元配列でのやり方と似ております。
my_favorite_foods = {vegetable: {green: {name: "broccoli"}}}
こちらのコードで、"broccoli"
のみを出力したい場合は、以下のように記述します。
puts my_favorite_foods[:vegetable][:green][:name]
このコードは、
my_favorite_foods
というハッシュの、
:vegetable
というキーに当たるバリューの、
:green
というキーに当たるバリューの、
:name
というキーに当たるバリューを出力します。
という意味です。
変数(ここでいうとmy_favorite_foods
の部分)に続けて、キーを横に並べて記述することで、取り出すことが可能になります。
ちなみに、出力結果は以下のようになりました。
broccoli
まとめ
ハッシュというのは、キーとバリューがセットになっているものをいう。
2重ハッシュというのは、バリューに当たる部分がさらにハッシュ状態になっているものをいう。
2重ハッシュの深い位置にあるバリューを取り出す際は、キーを順番に横に並べて記述する。