Ruby 中的 Attr_accessor、Attr_reader 和 Attr_writer

Stewart Nguyen 2023年1月30日
  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 方法。