2015-10-20 83 views
0

我试图将用户输入作为参数传递给构造函数,而不是将它传递给一个方法。当我这样做时,我在第20行(或创建构造函数的地方)出现错误消息“in initialize:错误的参数数量为< 1 for 0>”。为什么构造函数不会参数?将用户输入传递给构造函数Ruby

class Beginnerbudget 
    def rate_savings(amount) 
     @amount = amount 
     if amount >= 501 
      puts "You have $#{amount} in your account. Keep up the good 
      work!" 
     elsif amount <= 500 && amount >= 101 
      puts "You only have $#{amount} in your account. Try and save 
      a little more this month." 
     else amount < 100 
      puts "Yikes, you only have $#{amount} in your account! Sell 
      a kidney quick!" 
     end 
     end 
    end 

puts "How much money do you have in your checking account?" 
amount = gets.chomp.to_i 

beginner_budget = Beginnerbudget.new(amount) 
beginner_budget.rate_savings` 

回答

0

几乎得到它。应该先创建beginner_budget,方法是将其设置为Beginnerbudget的新实例。然后,使用beginner_budget,您可以调用Beginnerbudget中的任何方法并传递特定方法所需的任何参数。

amount = gets.chomp.to_i 

beginner_budget = Beginnerbudget.new 
beginner_budget.rate_savings(amount) 

只是要注意,传递一个参数Beginnerbudget.new(argument)意味着该参数是为你在那类有一个initialize方法。因此,这将工作:

class Beginnerbudget 
    def initialize(name) 
    @budget_name = name 
    end 
    def print_budget(amount) 
    puts "#{@name}: #{amount}" 
    end 
end 

some_budget = Beginnerbudget("Gas") 
some_budget.print_budget(10) 

回报Gas: 10

编辑:

另外,我建议删除以下:@amount = amount。在这种情况下,不需要创建实例变量,因为您将参数传递给您的方法,因此参数的范围在那里并且有效。

如果您想在类中的多个方法中使用变量,那么实例变量非常好。它将范围扩展到班级中的所有方法。

相关问题