你什么时候使用attr_writer?

时间:2017-08-09 14:28:40

标签: ruby class object instance attr

我可以想象当你想要一些属性只能读,或者是可写和可读的时候,但是当你想要一个属性可写且不可读时却不能。

在某些情况下,您可能希望阅读某些属性但无法更改它们。例如,如果您有一个Animal类,并希望使用名称,年龄和颜色对其进行初始化,则可以编写

attr_accessor :age, :color

然后名称有

attr_reader :name

因为名称不会改变。猫可以变老或改变颜色,但是一旦分配了名称(为了这个问题)不应该改变。

另一方面,我无法合理化您需要attr_writer(而不是attr_accessorattr_reader)的方案(除了表格密码)。在什么情况下你想写点东西,但不想读它?什么类型的方案或情况需要attr_writer

如果您能想到其他编程语言中的场景,那么这是受欢迎的,但我对面向对象知识的直接范围是在Ruby中。

1 个答案:

答案 0 :(得分:1)

如果你想要一个琐碎的作家和自定义读者怎么办?如果ivar尚未设置,则在调用阅读器时想要记住默认值是很常见的。

class Oof
  attr_writer :rab

  def rab
    @rab ||= "rab, of course!"
  end
end

oof = Oof.new
oof.rab # => "rab, of course!"
oof.rab = "zab"
oof.rab # => "zab"