4

クラス内にFUUコンスタントがFooありFoo2、コードを DRY するために、スーパークラス内にメソッドを移動しました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 に答える