Ruby 中的 Attr_accessor、Attr_reader 和 Attr_writer
Stewart Nguyen
2023年1月30日
2022年5月18日
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
方法。