Ruby hash.new错误未定义局部变量或方法。。。对于main:Object

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

我正在尝试创建一个新的散列(组),我将向其中传递名称、杂货、燃料和住宿以及娱乐活动的值。实际上,最终我需要一个嵌套在组哈希中的哈希(针对每个旅行者)。我现在的问题是我得到了这个信息:

main:Object的未定义局部变量或方法“group”
(回复):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的回复!还有其他建议吗?