前言:我确实了解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 并不是一个坏做法。假设你想要一个像你的例子一样的颜色设置器。你想接受这样一个事实,即颜色可以是数字、字符串等......