stackoverflow に関する以前の質問と回答をふるいにかけましたが、質問のほとんどがわかりました。関数呼び出しを proc または同様のコンテナー内に配置しないと、ハッシュ内に配置できないことがわかりました。
私が最終的にやろうとしているのは、メニューを表示し、ユーザー入力を取得してから、ハッシュを反復処理し、指定された関数を実行することです:
def Main()
menu_titles = {"Answer1" => Proc.new{Choice1()}}
Menu(menu_titles)
end
def Choice1()
puts "Response answer"
end
def Menu(menu_titles)
menu_titles.each_with_index do |(key, value),index|
puts "#{index+1}. #{key}"
end
user_input = 0
menu_titles.each_with_index do |(key, value), index|
if index.eql?(user_input)
menu_titles[value]
break
end
end
end
Main()
私が今抱えている問題は、ハッシュが呼び出す関数を入力していないことです。リターンまたは「プット」のどちらを使用しても、空白行が表示されるか、まったく表示されません。誰かが私のコードについて他の推奨事項を持っている場合は、私もすべて耳にします。正直なところ、私はプロシージャを使用するのが好きではありませんが、それは主に、プロシージャがどのように機能し、どこで使用するかを完全には知らないためです。
今私が持っている私のメニューのために:
user_input = 1
if user_input == 1
Choice1()
...
end