Ruby 中的 Attr_accessor、Attr_reader 和 Attr_writer

Stewart Nguyen 2023年1月30日 2022年5月18日
  1. 在 Ruby 中使用 get_dataset_data 更改存储在实例变量中的数据
  2. 在 Ruby 中使用 attr_accessor 访问或更改存储的实例变量中的数据
Ruby 中的 Attr_accessor、Attr_reader 和 Attr_writer

attr_accessorattr_readerattr_writer 用于将你的意图传达给读者,并使编写类更容易。

在 Ruby 中使用 get_dataset_data 更改存储在实例变量中的数据

我们希望其他类访问或更改存储在实例变量中的数据。

class Foo
  def initialize(data)
    @data = data
  end

  def get_data
    @data
  end

  def set_data(new_data)
    @data = new_data
  end
end

对于初学者来说,这是一种笨拙的入门方式。Ruby 提供了一种更方便的方式来实现与 attr_accessor 相同的结果。

在 Ruby 中使用 attr_accessor 访问或更改存储的实例变量中的数据

class MyClass
  attr_accessor :data

  def initialize(data)
    @data = data
  end
end

attr_accessor 将为 MyClass 定义两个实例方法:getter #data 和 setter #data=

我们可以使用上述的 get_dataset_data 方法。

my_instance = MyClass.new('private_information')

my_instance.data
=> 'private_information'

my_instance.data = 'information_changed'

puts my_instance.data

输出:

'information_changed'

当我们只需要类中的 getter 方法时,我们可以使用 attr_reader 而不是 attr_accessor

仅使用 attr_writter 定义 setter 方法。