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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。