4

我在FUU里面有一个常量FooFoo2类,为了干燥我的代码,我在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: 未初始化的常量 BaseStuff::FUU

是否有解决此问题的最佳实践?

4

2 回答 2

3
class Foo < BaseStuff
  ::FUU = "ok"
end
于 2012-04-01T16:42:53.167 回答
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
于 2012-04-01T16:42:12.153 回答