“ attr_accessor” /“ attr_reader”创建实例变量是什么意思?

斯特凡

的文档attr_accessor明确表示它创建了一个实例变量:

[...]创建实例变量(@name)和相应的访问方法[...]

以及attr_reader

创建实例变量和相应的方法[...]

我理解的第二部分,即attr_accessorattr_reader创建方法,但我不明白的第一部分。

他们“创建实例变量”是什么意思?

塞尔吉奥·图伦采夫

那是文档中的错误/误导性措辞。attr_reader/attr_accessor本身并不创造任何变量。他们怎么能 它们在类实例生命周期之外工作。甚至读访问也不能使实例变量变得生动起来。只有写访问权限才能创建它们。

class Foo
  attr_accessor :bar
end

foo = Foo.new
foo.instance_variables # => []
foo.bar # try read ivar
foo.instance_variables # => [], nope, not yet
foo.bar = 2 # write ivar
foo.instance_variables # => [:@bar], there it is

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章