类def方法初始化为0?

时间:2013-10-30 04:50:52

标签: ruby class methods initialization zero

我想了解这段代码。

我正在尝试将其初始化为零。 def seconds=(),这是什么意思?

我必须致电def seconds来获取变量。如果我只是放attr_accessor :seconds

,这不是一样的
require 'time'
class Timer

  def seconds=(seconds)
    @second = seconds
  end

  def seconds
    @seconds
  end
end

2 个答案:

答案 0 :(得分:2)

是的,它是一样的。

attr_accessor :seconds为您创建@seconds实例变量的setter和getter,因此您无需明确地执行此操作。

此外,您在设置器中错误地命名为@second

答案 1 :(得分:1)

要将类变量自动初始化为零,请定义它,然后覆盖其读取器方法:

class Timer
  attr_accessor :seconds

  def seconds
    @seconds ||= 0
  end
end