我正在开发一个小的rails应用程序,对ruby的OOP模型有一个问题。我有以下简化的类结构。
class Foo
protected
@bar = []
def self.add_bar(val)
@bar += val
end
def self.get_bar
@bar
end
end
class Baz < Foo
add_bar ["a", "b", "c"]
end
我现在的问题是,当我在Baz的类定义中调用add_bar时,@bar
显然没有初始化,并且我得到了一个错误,即+
操作符对于nil
不可用。直接在Foo
上调用add_bar
不会产生此问题。为什么会这样?我如何正确地初始化@bar
?
为了清楚我想要什么,我将指出我期望从这些类中获得的行为。
Foo.add_bar ["a", "b"]
Baz.add_bar ["1", "2"]
Foo.get_bar # => ["a", "b"]
Baz.get_bar # => ["a", "b", "1", "2"]
我怎样才能做到这一点呢?
https://stackoverflow.com/questions/4901208
复制相似问题