在某些语言中,您可以访问对象的属性,而无需编写自己的getter / setter方法。
对象是否内置了使用Ruby的getter / setter?
以下是我正在尝试的内容:
class Obj
def initialize(color)
@color = color
end
end
t = Obj.new("red")
puts t.color
答案 0 :(得分:6)
如果您只想运行磨机自动生成的getter / setter,那么您正在寻找attr_accessor :color
。
为此模块定义命名属性,其名称为symbol.id2name,创建实例变量(@name)以及相应的访问方法以读取它。还创建一个名为name =的方法来设置属性。字符串参数将转换为符号。
如果您不希望能够在课堂外设置值,那么还只有attr_reader :color
创建实例变量和返回每个实例变量值的相应方法。
attr_writer :color
如果你想在课堂外设置但不能阅读。
创建一个访问器方法以允许分配属性。
class Obj
attr_accessor :color
def initialize(color)
@color = color
end
end
t = Obj.new("red")
t.color #=> "red"
答案 1 :(得分:0)
我发现Ruby中的所有对象似乎都存在这些方法:
t.instance_variable_set(:@color, "blue")
t.instance_variable_get(:@color)