0

如果我有以下项目结构

项目/   
  库/
    子项目/
      a.rb
      b.rb
      库文件

其中 lib.rb 看起来像这样:-

module Subproject
  def foo
    do_some_stuff
  end
end

并且 a.rb 和 b.rb 都需要在 lib.rb 中混合一些方法,并且都在一个模块中命名空间,如下所示:-

require 'subproject/lib'

module Subproject
  class A
    include Subproject

    def initialize()
      foo()
    end
  end
end

ruby 在遇到 include 语句时会做什么?它怎么知道我只想包含来自 lib.rb 的 mixin,而不是包含 A 类和 B 类的整个模块,这纯粹是基于子项目/lib 的要求,还是我弄错了,它是包括整个模块,包括它们自身内部的 A 类和 B 类的定义?

4

1 回答 1

1

它包括整个模块。只有一个Subproject模块,您刚刚重新打开它a.rbb.rb添加了AB。我认为require无论如何都没有关系。

顺便说一句,您可以随时尝试irb

>> Subproject::A
=> Subproject::A
>> Subproject::A::A
=> Subproject::A
于 2010-03-18T10:51:09.143 回答