假设我们有两个类Foo和Foo Sub,分别在不同的文件foo.rb和foo_sub.rb中.
foo.rb:
require "foo_sub" class Foo def foo FooSub.SOME_CONSTANT end end
foo_sub.rb:
require "foo" class FooSub < Foo SOME_CONSTANT = 1 end
由于循环依赖,这不会工作 – 我们不能在没有另一个类的情况下定义任何类.有几种我已经看到的解决方案.其中两个我想避免 – 即将它们放在同一个文件中,并删除循环依赖.所以,我发现唯一的解决方案是一个前向声明:
foo.rb:
class Foo end require "foo_sub" class Foo def foo FooSub.SOME_CONSTANT end end
foo_sub.rb
require "foo" class FooSub < Foo SOME_CONSTANT = 1 end
不幸的是,如果我有三个文件,我不能得到相同的工作:
foo.rb:
class Foo end require "foo_sub_sub" class Foo def foo FooSubSub.SOME_CONSTANT end end
foo_sub.rb:
require "foo" class FooSub < Foo end
foo_sub_sub.rb:
require "foo_sub" class FooSubSub < FooSub SOME_CONSTANT = 1 end
如果我需要foo_sub.rb,那么FooSub是foo_sub_sub.rb中的一个未初始化的常量.任何想法如何解决这个问题,而不把它们放在同一个文件中,也不会删除循环依赖?