2017-07-20 64 views

回答

6

您正在寻找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" 
+0

感谢,这是比工作都是围绕我发现我使用好得多。 –

0

我发现,这些方法似乎在Ruby中的所有对象存在:

t.instance_variable_set(:@color, "blue") 
t.instance_variable_get(:@color) 
+0

这真的没有意义,除非你动态设置名字,比如'instance_variable_set('@'+ name,'blue')' – tadman

相关问题