在某些语言中,您可以访问对象的属性而无需编写自己的getter/setter方法。Ruby对象是否有内置的getter/setter方法?
对象是否内置了getter/setter和Ruby?
这里是我尝试:
class Obj
def initialize(color)
@color = color
end
end
t = Obj.new("red")
puts t.color
在某些语言中,您可以访问对象的属性而无需编写自己的getter/setter方法。Ruby对象是否有内置的getter/setter方法?
对象是否内置了getter/setter和Ruby?
这里是我尝试:
class Obj
def initialize(color)
@color = color
end
end
t = Obj.new("red")
puts t.color
您正在寻找attr_accessor :color
,如果你只想要磨自动生成的getter/setter方法的运行。
为此模块定义一个命名属性,其中名称为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"
我发现,这些方法似乎在Ruby中的所有对象存在:
t.instance_variable_set(:@color, "blue")
t.instance_variable_get(:@color)
这真的没有意义,除非你动态设置名字,比如'instance_variable_set('@'+ name,'blue')' – tadman
感谢,这是比工作都是围绕我发现我使用好得多。 –