2012-04-01 60 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

相关问题