質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

87.34%

なぜハッシュの値を自動的に参照しているのか

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 922
退会済みユーザー

退会済みユーザー

たびたび質問してすいません。質問しすぎだと思いつつもここがないと
挫折しそうです。下のプログラムはハッシュを使って

"sundayは日曜日です" という表示するプログラムです。そこで

puts "「#{day}」は#{wday[day]}のことです。"

の wday[day] の部分はどうして値を自動的に参照しているのか
がわかりません。

もしよろしければ解答いただけないでしょうか

    wday = {
  "sunday"    => "日曜日",
  "monday"    => "月曜日",
  "tuesday"   => "火曜日",
  "wedensday" => "水曜日"
  "thursday"  => "木曜日",
  "friday"    => "金曜日",
  "saturday"  => "土曜日",
}


%w(sunday monday tuesday wedensday thursday friday saturday).each do |day|
  puts "「#{day}」は#{wday[day]}のことです。"
end

# => 「sunday」は日曜日のことです。・・・・・・・・・・
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • quickquip

    2017/10/26 06:57

    コードはコード、引用は引用にして最低限まともに読めるようにしましょう。 https://teratail.com/help/question-tips#questionTips3-4 のすぐ上の画像

    キャンセル

  • otn

    2017/10/26 07:04

    そもそも、Rubyについて、ハッシュについて、どの程度の知識があるのでしょうか?入門書は読み終えましたか?

    キャンセル

  • coco_bauer

    2017/10/26 10:11

    「どうして値を自動的に参照している」って、何が自動的だと思っていらっしゃいますか? 質問の文章を知り合いに読んでもらって、理解できるかどうかを確認してから投稿するようにしたほうが良いと思います。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/10/26 18:32

    コードはコードにしました。

    キャンセル

回答 1

checkベストアンサー

+2

wday[day]がなぜ"日曜日"になるかということであれば・・・

Hashとはそういうものだということになります

つまりキーの値によって対応する値を参照したり設定したりできるものということですね。


otnさんがコメントされてますが・・・

初歩的な質問がNGというわけではありませんが、ある程度の知識(読み手の感覚に左右されるところもありますが、初歩的な教科書の最初の方で説明されている感じのもの)の質問はなかなか回答がつきにくいかも知れません。

そうした質問に対して閲覧者が感じる印象は

  • 質問者さんの学んだ時間がかなり少ない
  • 質問者さんの前提知識が少ないとそれだけ説明事項が多くなりそう
  • 質問の仕方や学ぶための方法論などメタなコメントが必要な気がしてくる

といったものになると思います。こういう場合もう少し頑張って自分で時間をかけて学んでほしいと思う人が多くなるかも知れません。

ところでお使いのRubyにREPLがあるなら、days[day]がなんでこういう結果になるのだろうと思ったときにHashについて教科書を見ながら簡単な計算をさせてみて理解のヒントとするってのも手かも知れません。知識がついてくれば「理詰め」に仕様を理解することができるようになっていきますが、最初のころは「やってみて理解する」ほうが学びやすい面があると思います。

$ irb
irb(main):001:0> h={ "a"=>"A", "b"=>"B" }
=> {"a"=>"A", "b"=>"B"}
irb(main):002:0> h["a"]
=> "A"
irb(main):003:0> h["a"]="AA"
=> "AA"
irb(main):004:0> h["a"]
=> "AA"

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/26 18:35

    回答ありがとうございます。下のソースコードを見てすっきり理解できました。
    そして、根本的な勉強不足であることが理解できました。
    これからは、質問内容に気を付けたいと思います。
    ありがとうございました。

    キャンセル

  • 2017/10/26 18:41

    動かしてみることで雰囲気を掴むと教科書やリファレンスに書いてある内容がより分かり易くなると思います。先に本読んでも「何言ってるかわからない」ということもままあると思うのです。

    キャンセル

  • 2017/10/26 18:55

    楽しいrubyをもとに コードを写してから rubyプロンプトで全部動かしていますが、
    練習問題になると全く内容が頭から消えてます。本を何度も読み返して学んでいこうと思います。

    キャンセル

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

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る