0

次のプロジェクト構造がある場合

事業/   
  ライブラリ/
    サブプロジェクト/
      a.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

include ステートメントに遭遇したとき、ruby は何をしますか? クラスAとクラスBの両方を含むモジュール全体ではなく、lib.rbからのミックスインのみを含めたいことをどのように知っていますか?これは純粋にsubproject/libのrequireに基づいていますか、それとも間違っていますクラスAとBの定義を含めて、モジュール全体を含めますか?

4

1 に答える 1

1

モジュール全体を含んでいます。Subprojectモジュールは 1 つしかありません。それをa.rbおよびで再度開き、b.rbクラスAおよびBを追加しました。requireとにかくそこに関係があるとは思わない。

ところで、いつでも試すことができますirb

>> Subproject::A
=> Subproject::A
>> Subproject::A::A
=> Subproject::A
于 2010-03-18T10:51:09.143 に答える