У меня есть класс Cache
и 2 производных класса 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]
Как я могу получить поведение, которое я хочу?Почему Руби делает это так странно?