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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...