🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

2532閲覧

rubyで ifハッシュ[キー]のハッシュがわかりません

hello_space

総合スコア24

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2019/09/14 14:17

前提・実現したいこと

Progate Ruby 学習コース2 15総合課題(2)について
画像の中で配列はolympicsというのはわかるのですが、ハッシュがイマイチわかりません。
スライドではif ハッシュ[キー]でif文を作ると書いてあるのですが、そもそもこの中でハッシュは{}で囲ってある部分ではないのでしょうか?

答えを見たら変数であるolympicがハッシュの位置に入っていました
if olympic[:note]となっています。
なぜ変数がハッシュになるのでしょうか?
わからない事だらけですいません。ご回答よろしくお願いします。イメージ説明

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

> 変数がハッシュになるのでしょうか?

ハッシュは { key => value } である、という認識は合っています。

ruby の変数は何でも入れることができます。

if olympic[:note]
の場合、olympicにハッシュを「代入」してあるのです。
ですので、
これは { year: 1896,city:"アテネ"}[:note] を行っていることになります。

投稿2019/09/14 20:56

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hello_space

2019/09/14 21:47

なるほどそういうことですか!解決いたしました! ありがとうございました(^∇^)
guest

0

ベストアンサー

olympics = [
{ year: 1896,city:"アテネ"}
{ year: 1900,city:"パリ"}
{ year: 1904,city:"セントルイス",note:"アメリカ初開催"}
・・・以下省略・・・
]

上記の定義は
hash1={ year: 1896,city:"アテネ"}
hash2={ year: 1900,city:"パリ"}
hash3={ year: 1904,city:"セントルイス",note:"アメリカ初開催"}
・・・以下省略
olympics = [ hash1,hash2,hash3,・・・以下省略・・・ ]
と同じであることは理解できますね。
hash1,hash2,・・・がハッシュです。

olympicsはハッシュの配列です。

olympics.each do |olympic| を行うと
個々のハッシュがolympicに設定され、それが評価されます。
つまり、olympicには、hash1,hash2,hash3が設定されます。
従って、
if olympic[:note]は、
if hash1[:note] if hash2[:note] と同じことになります。

投稿2019/09/14 15:08

tatsu99

総合スコア5493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hello_space

2019/09/14 21:46

お早い回答ありがとうございました! 解決いたしました!ありがとうございます(о´∀`о)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問