什么时候是#attr_writer'没有' attr_reader使用?

时间:2018-01-28 19:00:09

标签: ruby

a question @coreyward谈论单独使用它,但没有举例说明何时。网上的其他消息来源暗示了一些用例,但我还没有找到任何列出真实世界示例的来源。您何时想要写入数据但无法读取数据?

1 个答案:

答案 0 :(得分:4)

你并不总是想要阅读它;有时默认的编写器很好,但你想要一个自定义阅读器。举个例如,这个人类:

class Person
  attr_writer :name
  attr_accessor :title

  def initialize(name, title)
    @name = name
    @title = title
  end

  def name
    "#{@title} #{@name}"
  end
end

此处,通过attr_readerattr_accessorname创建阅读器将是多余的,因为我正在定义自己的name方法,因为有自定义规则,我应该总是用标题显示名称。

顺便说一句,有人可能会说我的name方法应该更像name_with_title或者你有什么,但我仍然不会想要默认的name来自读者的方法,因为我仍然希望对该名称的所有访问都能通过这个其他方法。