問題
ある映画のハッシュを定義し、格納されている
「title」(タイトル)・「genre」(ジャンル)・「year」(公開年)の三つの要素の中から
一つを取り出すプログラムを作成してください。
定義する変数
①movie = {"title" => "ハリーポッター", "genre" => "ファンタジー", "year" => "2001年"}
②ユーザーが入力するキーを、getsメソッドを利用し定義しましょう
模範解答
def movie_info(movie, data)
puts movie[data]
end
movie = {"title" => "ハリーポッター", "genre" => "ファンタジー", "year" => "2001年"}
puts "以下から一つを選んで入力してください。
・title
・genre
・year"
info = gets.chomp
movie_info(movie, info)
解答
まず、ハッシュ名[キー名]と記述する事で、
そのキーに対応するバリューを取り出す事ができる。
例えばキーである「title」を指定した場合、
対応するバリュー「ハリーポッター」が取り出される。
今回の場合では、movie["title"]はハリーポッターと取り出される。
このようにハッシュからバリューを取り出すには上記のように記述して取り出すが、
キーが文字列の場合は、キーをシンボルに変更しないといけない。
従って、文字列をシンボルに変換する記述が必要である。
info = gets.chomp.to_sym
to_symメソッドを用いて、返り値を文字列からシンボルに変換している。
まとめ
ハッシュの定義方法によってバリューの取り出し方は異なる事を意識していく。