我试图将用户输入作为参数传递给构造函数,而不是将其传递给一个方法。当我这样做时,我收到错误消息"在初始化中:错误的参数数量< 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`
答案 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;
}
}
。在这种情况下无需创建实例变量,因为您将参数传递给方法,因此参数的范围就在那里并且有效。
如果要在类中的多个方法中使用变量,则实例变量很棒。它会将范围扩展到您班级内的所有方法。