module AA
def func1()
end
class BB
def method2()
func1()
end
end
end
現在、例外をmethod2
見つけることができず、発生します。func1
なぜこれが起こるのか、これを行う正しい方法は何ですか?
module AA
def func1()
end
class BB
def method2()
func1()
end
end
end
現在、例外をmethod2
見つけることができず、発生します。func1
なぜこれが起こるのか、これを行う正しい方法は何ですか?
これはいくつかの理由で発生します。
まず、モジュールに属するものはクラスAA
に属さないためです。BB
次に、定義する構文がfunc1
正しくありません。
関数の定義 (2 つの異なる方法) と呼び出しの両方について、以下の例を参照してください。
module AA
def self.func1
end
def AA.func2
end
class BB
def method2()
AA::func1()
end
end
end
私が従う方法は、クラス定義にモジュールを含めることです
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
または、次を使用できますextend
。
module AA
def func1()
end
class BB
extend AA
def method2()
func1()
end
end
end