Hi, all 在做一个关于 Ruby class variable 的实验, 碰到一点问题,求教各位:
class A
@@a = 1
def f
@@a
end
def f=(v)
@@a = v
end
end
A.new.f #=> 1
A.new.f = 2
A.new.f #=> 2
class A
def self.f1
@@a
end
class << self
def f2
@@a
end
end
end
A.f1 #=> 2
A.f2 #=> 2
# 直到这里,所有内容都可以理解
class << A
def f3
@@a
end
end
A.f3
#=> warning: class variable access from toplevel
#=> NameError: uninitialized class variable @@a in Object
难道用 class << A; ... ;end
和 class A; class << self; ... ; end; end
有什么区别吗?为啥用后者可以取到 A 的 class variable 但是有前者却会出错?谢谢