如果attr_accessor包含一个元素,例如。":name",是否需要'name='方法?



前言:我确实了解attr_accessor的标准定义,并且知道attr_accessor代表两个实例方法 - setter 和编写器,并且attr_accessor允许在整个类中访问实例变量。

但是我时不时地看到 AND 中包含的元素attr_accessor被定义为一种方法。

所以我的问题是:为什么会这样?我看到的只是糟糕的代码吗?

伪/示例代码:

class Such_n_such
    attr_accessor :name, :color  
            #code omitted
       def color=(color)
         (some code)
       end

提前感谢!

我认为你不应该使用attr_accessor然后覆盖二传手。

我更喜欢将attr_reader与自定义二传手方法一起使用:

attr_accessor :name
attr_reader :color  
def color=(color)
  # ...
end

是的,attr_accessor为该属性添加了 setter 和 getter 方法,不,如果您需要自定义 setter 并不是一个坏做法。假设你想要一个像你的例子一样的颜色设置器。你想接受这样一个事实,即颜色可以是数字、字符串等......

最新更新