当ruby遇到;包括模块“;陈述

当ruby遇到;包括模块“;陈述,ruby,mixins,Ruby,Mixins,如果我有以下项目结构 project/ lib/ subproject/ a.rb b.rb lib.rb a.rb和b.rb都需要在lib.rb中混合一些方法,并且都在模块中使用名称空间,如下所示:- require 'subproject/lib' module Subproject class A include Subproject def initialize() foo() end

如果我有以下项目结构

project/ lib/ subproject/ a.rb b.rb lib.rb 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类本身的定义?

它包括整个模块。只有一个
子项目
模块,您刚刚在
a.rb
b.rb
中重新打开了它,并在其中添加了类
a
b
。我认为无论怎样,
require
都与此无关

顺便说一句,您可以在
irb
中尝试:

>> Subproject::A
=> Subproject::A
>> Subproject::A::A
=> Subproject::A

所以,如果我只想包含lib.rb函数,那么我必须在一个名为SubprojectLib或类似的模块中定义它,并且只包含它?
>> Subproject::A
=> Subproject::A
>> Subproject::A::A
=> Subproject::A