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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

解決済

2回答

2842閲覧

Rubyにて、ハッシュの内容を取り出すときに空白になってしまう。

Kochan

総合スコア56

Ruby

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

0グッド

0クリップ

投稿2016/11/18 10:40

###ハッシュオブジェクトを作り、それを引数にしてメソッドに渡し出力をしようとしています。

movieというハッシュオブジェクトから任意のキーを入力してそれをメソッドに渡し、情報を出力するプログラムを書いています。
流れとしては以下の通りです。

・title,genre,yearの3つの情報を持ったmovieというハッシュオブジェクトを作る。
・getsを使いターミナルからkeyを入力する。
・movieハッシュオブジェクトとkeyを引数としてpickMovieImformationメソッドに渡す。
・メソッド内でターミナルへ出力する。

###発生している問題・エラーメッセージ
イメージ説明
titleと入力したのちに、1行空白ができるだけで、
何も出力されてきません。

genre,yearを入力もしてみましたがどちらも出力されませんでした。

###該当のソースコード

Ruby

1def pickMovieImformation(movie, key) 2 puts movie[:key] 3end 4 5 6movie = {title: "ハリーポッター", genre: "magic fantasy", year: "2001"} 7 8puts movie[:title] 9puts movie[:genre] 10puts movie[:year] 11 12puts "以下から一つを選んで入力してください。 13・title 14・genre 15・year 16" 17 18key = gets.chomp 19pickMovieImformation(movie,key) 20

###補足情報(言語/FW/ツール等のバージョンなど)
Rubyのバージョンは2.0.0です。
ruby -vを使って調べました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

文字列String とシンボルSymbolとの相違ではないでしょうか?

ruby

1puts movie[:title] # => "ハリーポッター" 2puts movie["title"] # => ""

ruby

1# key = gets.chomp 2key = gets.chomp.to_sym 3pickMovieImformation(movie,key)

いかがでしょうか?

投稿2016/11/18 10:50

Atelier_Mirai

総合スコア68

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

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

Kochan

2016/11/18 11:09

できました!!!!! getsの部分でstringになってしまっていたのですね! ありがとうございます!
Atelier_Mirai

2016/11/18 11:17

解決したようで何よりです。 pickMovieImformation(movie,key) より pick_movie_infomation(movie, key) と、アンダーバーで繋げた方がRubyらしいです。 ()はなくても良いですが、あった方が最初は分かりやすいかも。 imformationはタイプミスですね。 Ruby 愉しんで下さい。
Kochan

2016/11/18 11:23

少しswiftを勉強したので、そこで学んだやり方で書いていました。 rubyらしく書いてみます! タイプミス、お恥ずかしい限りです、、、 ()がなくてもいいというのは初めて知りました!! pick_movie_infomation movie, key で試してみて動いてびっくりです! ありがとうございます!
guest

0

直接の回答ではありませんが、 ruby のコードの書式をチェックするツールを紹介します。

質問文のコードのチェック結果と、 修正してみた結果を示します。

イメージ説明

イメージ説明

a1.rb

ruby

1def pick_movie_information(movie, key) 2 movie[key] 3end 4 5movie = { title: 'ハリーポッター', genre: 'magic fantasy', year: '2001' } 6 7puts movie[:title] 8puts movie[:genre] 9puts movie[:year] 10 11puts "以下から一つを選んで入力してください。 12・title 13・genre 14・year 15" 16 17key = gets.chomp.to_sym 18puts pick_movie_information(movie, key)

投稿2016/11/18 23:29

katoy

総合スコア22324

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

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

Kochan

2016/11/19 06:39

矯正ツールのようなものがあるのですね! 教えていただきありがとうございます!! 修正後のコードではシングルクオーテーションを使っていますが、 Rubyを書く際はそちらの方が一般的なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問