当ruby遇到;包括模块“;陈述
如果我有以下项目结构 project/ lib/ subproject/ a.rb b.rb lib.rb a.rb和b.rb都需要在lib.rb中混合一些方法,并且都在模块中使用名称空间,如下所示:-当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
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