0
module AA
  def func1()
  end

  class BB
    def method2()
      func1()
    end
  end

end

現在、例外をmethod2見つけることができず、発生します。func1

なぜこれが起こるのか、これを行う正しい方法は何ですか?

4

3 に答える 3

1

これはいくつかの理由で発生します。

まず、モジュールに属するものはクラスAAに属さないためです。BB

次に、定義する構文がfunc1正しくありません。

関数の定義 (2 つの異なる方法) と呼び出しの両方について、以下の例を参照してください。

module AA
  def self.func1
  end

  def AA.func2
  end

  class BB
    def method2()
      AA::func1()
    end
  end
end
于 2013-03-05T04:45:08.247 に答える
0

私が従う方法は、クラス定義にモジュールを含めることです

 module AA
   def func1
     puts "func1"
     end
   class BB
    include AA
     def method2
      func1()
       end
     end
   end

これは Module Mixin 戦略であり、モジュールの外部または内部の任意のクラスで機能します。Mixin セクションをお読みください: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html

于 2013-03-05T04:49:37.130 に答える
0

または、次を使用できますextend

module AA
  def func1()
  end

  class BB
    extend AA
    def method2()
      func1()
    end

  end
end
于 2013-03-05T04:51:30.207 に答える