看到很多代码中都使用了这样的代码:
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 << self #打开类对象空间
attr_accessor :m #加getter/setter
就是给类添加了一个访问器方法,准确地说:是给 Class 对象添加了一个访问器 singleton method. 或者说打开类对象的 eigenclass, 添加了一个 accessor.