微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – `attr_accessor` /`attr_reader`创建实例变量是什么意思?

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 举报,一经查实,本站将立刻删除。

相关推荐