attr_accessor
的文档明确地说它创建了一个实例变量:
[...] creating an instance variable (
@name
) and a corresponding access method [...]
attr_reader
的文档也是如此:
Creates instance variables and corresponding methods [...]
我理解第二部分,即 attr_accessor
和 attr_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
关于ruby - `attr_accessor`/`attr_reader` 创建实例变量是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44108924/