Ruby 中的 Attr_accessor、Attr_reader 和 Attr_writer
Stewart Nguyen
2023年1月30日
attr_accessor
、attr_reader
和 attr_writer
用於將你的意圖傳達給讀者,並使編寫類更容易。
在 Ruby 中使用 get_data
和 set_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_data
和 set_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
方法。