2012-04-01 61 views
4

我在FooFoo2類中有FUU constante,爲了幹我的代碼,我在BaseStuff超類中移動了一個方法。就像這樣:超類未初始化的常量

class BaseStuff 
    def to_s 
    FUU 
    end 
end 

class Foo < BaseStuff 
    FUU = "ok" 
end 

class Foo2 < BaseStuff 
    FUU = "ok2" 
end 

但我的問題是,後:

a = Foo.new 
puts a.to_s 

我得到這個錯誤:

NameError: uninitialized constant BaseStuff::FUU

是否有解決這一問題的最佳做法?

回答

2
class BaseStuff 
    FUU = nil 
    def to_s 
    self.class::FUU 
    end 
end 

class Foo < BaseStuff 
    FUU = "ok" 
end 

class Foo2 < BaseStuff 
    FUU = "ok2" 
end 

a = Foo.new 
puts a.to_s # => ok 

puts Foo2.new.to_s # => ok2 
+0

只是完美。謝謝! – Doug 2012-04-01 16:51:21

3
class Foo < BaseStuff 
    ::FUU = "ok" 
end 
+0

Waw,效果很好!然而這在我的情況下可能會很棘手,因爲我會動態地添加這個常量。不管怎麼說,還是要謝謝你。 – Doug 2012-04-01 16:50:43

相關問題