将用户输入传递给构造函数Ruby

时间:2015-10-20 02:33:55

标签: ruby constructor

我试图将用户输入作为参数传递给构造函数,而不是将其传递给一个方法。当我这样做时,我收到错误消息"在初始化中:错误的参数数量< 1表示0> "在第20行(或创建构造函数的地方)。为什么构造函数不接受参数?

  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`

1 个答案:

答案 0 :(得分:0)

几乎得到了它。首先应通过将beginner_budget设置为Beginnerbudget的新实例来创建beginner_budget。然后,使用Beginnerbudget,您可以调用amount = gets.chomp.to_i beginner_budget = Beginnerbudget.new beginner_budget.rate_savings(amount) 中的任何方法,并传递特定方法所需的任何参数。

Beginnerbudget.new(argument)

请注意,将参数传递给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

编辑:

另外,我建议删除以下内容:class Helpers { public static function somefunc(){ var_dump(env('QINIU_BUCKET_DOMAIN'));exit; } } 。在这种情况下无需创建实例变量,因为您将参数传递给方法,因此参数的范围就在那里并且有效。

如果要在类中的多个方法中使用变量,则实例变量很棒。它会将范围扩展到您班级内的所有方法。