Ruby 请教,Eigenclass 中的 attr_accessor 的作用?

andor_chen · 2012年05月12日 · 最后由 zw963 回复于 2012年05月12日 · 2631 次阅读

看到很多代码中都使用了这样的代码:

class C
  class << self
    attr_accessor :m
  end
end

这样在 eigenclass 中使用 attr_accessor 的作用是什么呢?

相当于是个类变量吧

puts C.m
C.m =123
puts C.m

输出为:

nil
123

生成 getter, setter 方法的。

class << self #打开类对象空间 attr_accessor :m #加getter/setter 于是多了两个方法 C.m= C.m 执行 C.m=obj_of_m,结果是 obj_of_m 会存在 C 类的对象空间,可以通过 C.m 取出来

就是给类添加了一个访问器方法,准确地说:是给 Class 对象添加了一个访问器 singleton method. 或者说打开类对象的 eigenclass, 添加了一个 accessor.

需要 登录 后方可回复, 如果你还没有账号请 注册新账号