前提・実現したいこと
Rubyで簡単な辞書アプリを作る問題をネットで見つけてやってみたんですが、
初見ではあまりわからなかったので解答をみました。その解答コードが下のものです。
ここでいまいち理解できないのが
add_term(dictionary)メソッド内の最後の行
dictionary[ja_new_term] = en_new_term
という記述です。
dictionary[ja_new_term] の ja_new_term は
ユーザーが入力した情報を持った変数ですよね?
それを、ハッシュである dictionary の キーとして扱っているのでしょうか?
だとすれば疑問があります。
ハッシュのキーは [:key] という風に 『:』を先頭に持ってこなければならないと
習いました。
しかし、ユーザーが入力した値には『:』がつくとは限りません。
これは一体どういうことなのでしょうか?
教えてくださる方いらっしゃいましたら何卒よろしくお願いいたします。
発生している問題・エラーメッセージ
dictionary = {} def add_term(dictionary) en_new_term = {} puts "日本語の単語入力" ja_new_term = gets.chomp puts "品詞" en_new_term[:part_of_speech] = gets.chomp puts "英語の意味" en_new_term[:definition] = gets.chomp puts "例" en_new_term[:example] = gets.chomp dictionary[ja_new_term] = en_new_term end def look_for_term(dictionary) line = "_____________________" puts "英語を見たい日本語を入力" ja_term = gets.chomp the_term = dictionary[ja_term] puts line puts "品詞: #{the_term[:part_of_speech]}" puts line puts "意味: #{the_term[:definition]}" puts line puts "例題: #{the_term[:example]}" puts line end def show_all_terms(dictionary) line = "_____________________" dictionary.each do |ja_term, en_term| puts ja_term puts line puts "品詞: #{en_term[:part_of_speech]}" puts line puts "意味: #{en_term[:definition]}" puts line puts "例題: #{en_term[:example]}" puts line end end while true do puts "[0]新しい単語を追加\n[1]単語の意味を調べる\n[2]全てをリストする\n[3]アプリを閉じる" input = gets.to_i if input == 0 add_term(dictionary) elsif input == 1 look_for_term(dictionary) elsif input == 2 show_all_terms(dictionary) elsif input == 3 exit else puts "無効な数字" end end
該当のソースコード
Ruby
1 def add_term(dictionary) 2 en_new_term = {} 3 puts "日本語の単語入力" 4 ja_new_term = gets.chomp 5 puts "品詞" 6 en_new_term[:part_of_speech] = gets.chomp 7 puts "英語の意味" 8 en_new_term[:definition] = gets.chomp 9 puts "例" 10 en_new_term[:example] = gets.chomp 11 dictionary[ja_new_term] = en_new_term 12 end
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
Rubyのバージョンは 2.5.1 です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/25 06:57