Ruby hash.new错误未定义局部变量或方法。。。对于main:Object
我正在尝试创建一个新的散列(组),我将向其中传递名称、杂货、燃料和住宿以及娱乐活动的值。实际上,最终我需要一个嵌套在组哈希中的哈希(针对每个旅行者)。我现在的问题是我得到了这个信息: main:Object的未定义局部变量或方法“group”Ruby hash.new错误未定义局部变量或方法。。。对于main:Object,ruby,hash,Ruby,Hash,我正在尝试创建一个新的散列(组),我将向其中传递名称、杂货、燃料和住宿以及娱乐活动的值。实际上,最终我需要一个嵌套在组哈希中的哈希(针对每个旅行者)。我现在的问题是我得到了这个信息: main:Object的未定义局部变量或方法“group” (回复):5:在“用户名”中 (回复):18:在“输入费用”的“块中” (回复):15:in‘times’ (回复):15:在“输入费用”中 (答复): 我只是在学Ruby。任何帮助都将不胜感激 group = Hash.new def user_na
(回复):5:在“用户名”中
(回复):18:在“输入费用”的“块中”
(回复):15:in‘times’
(回复):15:在“输入费用”中
(答复): 我只是在学Ruby。任何帮助都将不胜感激
group = Hash.new
def user_name
puts "What is the name of this traveler?"
group["name"]= gets.chomp.capitalize
end
def enter_expenses
puts "Welcome to the Expense Tracker System!\n".upcase
puts "__________________________________________"
puts "\nUse this system to track your group's expenses when traveling."
print "Ready to get started? Enter yes to continue"
ready_to_expense = gets.chomp.downcase
4.times do
if ready_to_expense == "yes"
puts "Welcome #{user_name}! Enter your expenses below:\n"
puts "Amount spent on groceries:"
group["groceries"]= gets.chomp.to_f
puts "Amount spent on fuel & accommodations:"
group["fuel_and_accommodations"]= gets.chomp.to_f
puts "Amount spent recreational activities:"
group["recreational_activities"] = gets.chomp.to_f
elsif "Please come back when ready to enter your expenses."
end
end
end
enter_expenses
create_travelers
puts "__________________________________________"
puts "Thanks for using the expense tracker system!".upcase
Ruby中的局部变量不会进入方法;方法声明自己的作用域,它们的行为不像闭包。您可以改用实例变量:
@group = Hash.new # NOTE @
...
def enter_expenses
...
4.times do
if ready_to_expense == "yes"
@group["groceries"]= gets.chomp.to_f # NOTE @
...
end
end
end
将其作为实例或全局变量也不起作用:(非常感谢mudasobwa的回复!还有其他建议吗?