【发布时间】:2014-03-21 09:41:32
【问题描述】:
在两个类B和C中设置一个类变量@@foo,它们都不是另一个的子类,但它们都包含一个公共模块A,似乎为@987654326分别创建@@foo @ 和C,A 无法访问:
module A; end
class B; include A; @@foo = 1 end
class C; include A; @@foo = 2 end
module A; p @@foo end # => NameError: uninitialized class variable @@foo in A
class B; p @@foo end # => 1
class C; p @@foo end # => 2
但是当@@foo 被分配到A 中时,它作为B 和C 的祖先,@@foo 即B 和C 访问成为@ 的@@foo 987654338@.
module A; @@foo = 3 end
class B; p @@foo end # => 3
class C; p @@foo end # => 3
B 和 C 的 @@foo 发生了什么?当其祖先的任何@@foo 被分配时,它们会被删除吗?
【问题讨论】:
-
@ArupRakshit 这不是答案。实际上,我的问题来自那个答案。你的回答就是这个问题的起点。
-
我明白了.. 让我想想.. :-) 好问题。
标签: ruby class-variables