如果我有以下项目结构
project/ lib/ subproject/ a.rb b.rb lib.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类的整个模块,这是纯粹基于subproject / lib的要求还是我弄错了它是包括整个模块,包括其自身的A类和B类的定义?
答案 0 :(得分:1)
它包括整个模块。只有一个Subproject
模块,您刚刚在a.rb
和b.rb
重新打开了该模块,并为其添加了课程A
和B
。我认为require
无论如何都不相关。
顺便说一句,你总是可以在irb
:
>> Subproject::A
=> Subproject::A
>> Subproject::A::A
=> Subproject::A