0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】ハッシュの中にハッシュ(2重ハッシュ)

Posted at

プログラミング学習中で、これはメモしたいと思ったものを、自分用に分かりやすく残しておきます。

そもそもハッシュとは

ハッシュというのは「データ」とそれに対応する「名前」のセットを要素として持つ値のことを言います。
コードで記述すると以下のようなものを指します。

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重ハッシュの深い位置にあるバリューを取り出す際は、キーを順番に横に並べて記述する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?