前言:我确实理解attr_accessor的标准定义,并且知道attr_accessor代表两个实例方法 - 一个setter和一个writer,而attr_accessor允许实例变量在整个类中可访问。
但是我偶尔会看到attr_accessor中包含的元素并且被定义为方法。
所以我的问题是:为什么会这样?这只是我看到的糟糕代码吗?
伪/示例代码:
class Such_n_such
attr_accessor :name, :color
#code omitted
def color=(color)
(some code)
end
提前致谢!
答案 0 :(得分:3)
我认为你不应该使用attr_accessor
然后覆盖setter。
我更喜欢将attr_reader
与自定义setter方法结合使用:
attr_accessor :name
attr_reader :color
def color=(color)
# ...
end
答案 1 :(得分:0)
是的,attr_accessor
添加了该属性的setter和getter方法,如果您需要自定义setter,这不是一个不好的做法。假设你想要一个像你的例子一样的颜色设定器。你想要了解颜色可以是数字,字符串等......