我有一个班级Cache
和两个派生班级Foo
和Bar
(简化,但原则相同)。
class Cache
@@test = []
def self.test
@@test
end
def self.add(value)
@@test << value
end
end
class Foo < Cache
end
class Bar < Cache
end
运行以下内容可以让我得出结论:@@ test不是Foo
和Bar
唯一的,但只是Cache
唯一,这是我不想要的也不期望。
Foo.add(1) #[1]
Bar.add(2) #[1,2]
puts Foo.test #[1,2]
这不应该是:
Foo.add(1) #[1]
Bar.add(2) #[2]
puts Foo.test #[1]
如何获得我想要的行为?为什么Ruby这么奇怪?
答案 0 :(得分:0)
在这种情况下,解决方案不是使用静态类,而是使用我想要的类的2个实例,并将它们存储在静态变量中。