【发布时间】:2016-12-30 21:35:01
【问题描述】:
我不明白,当我尝试运行以下代码时,我得到了
employee.rb:55:in `hourly_wage=':堆栈级别太深 (SystemStackError)
class HourlyEmployee < Employee
attr_reader :hourly_wage, :hours_per_week
def hourly_wage=(hourly_wage)
self.hourly_wage = hourly_wage
end
def hours_per_week=(hours_per_week)
self.hours_per_week = hours_per_week
end
def print_pay_stub
print_name
pay_for_period = (hourly_wage) * (hours_per_week) * 2
formatted_pay = format("$%.2f", pay_for_period)
puts "Pay for this period: #{formatted_pay}"
end
end
在 Java 中我在 setter 方法中使用 this 关键字,这不是基本相同吗?
如果我将 def 替换为,那么一切正常。
def hourly_wage=(hourly_wage)
@hourly_wage = hourly_wage
end
抱歉,刚开始学Ruby
【问题讨论】:
-
在您的情况下,您不需要实现
def hourly_wage=和def hours_per_week=。您可以简单地将attr_reader :hourly_wage, :hours_per_week更改为attr_accessor :hourly_wage, :hours_per_week -
@sig 抱歉..忘了提到那里会有验证..为了清楚起见,我只是将其删除。
标签: ruby