0

我试图理解这段代码。

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

我必须打电话def seconds来获取变量。如果我只是把这不是一样的attr_accessor :seconds吗?

require 'time'
class Timer

  def seconds=(seconds)
    @second = seconds
  end

  def seconds
    @seconds
  end
end
4

2 回答 2

2

是的,它是一样的。

attr_accessor :seconds为您创建实例变量的 setter 和 getter @seconds,因此您不必显式执行此操作。

此外,您@second在二传手中命名错误。

于 2013-10-30T04:58:36.827 回答
1

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

class Timer
  attr_accessor :seconds

  def seconds
    @seconds ||= 0
  end
end
于 2013-10-30T05:35:41.187 回答