Ruby 对象有内置的 getter/setter 方法吗?



在某些语言中,你可以访问对象的属性,而无需编写自己的getter/setter方法。

对象是否内置了 Ruby 的 getter/setter?

这是我正在尝试的:

class Obj
def initialize(color)
@color = color
end
end
t = Obj.new("red")
puts t.color

如果您只想运行磨机自动生成的吸气剂/二传手,您正在寻找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"

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

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

最新更新