module AA
def func1()
end
class BB
def method2()
func1()
end
end
end
當前method2
找不到func1
並引發異常。如何在Ruby中將模塊級函數導入類實例?
爲什麼會發生這種情況,以及正確的方法是什麼?
module AA
def func1()
end
class BB
def method2()
func1()
end
end
end
當前method2
找不到func1
並引發異常。如何在Ruby中將模塊級函數導入類實例?
爲什麼會發生這種情況,以及正確的方法是什麼?
,我要走的路是包含模塊在類定義
module AA
def func1
puts "func1"
end
class BB
include AA
def method2
func1()
end
end
end
這是一個模塊的Mixin的策略,對於任何類的外部或模塊內工作。 請閱讀密新科:http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html
發生這種情況的原因有兩個。
首先,因爲屬於AA
模塊的東西不屬於BB
類。
其次,您定義func1
的語法不太正確。
請參閱下面的這個例子來定義函數(2種不同的方式)並調用它。
module AA
def self.func1
end
def AA.func2
end
class BB
def method2()
AA::func1()
end
end
end
另外,您可以使用extend
:
module AA
def func1()
end
class BB
extend AA
def method2()
func1()
end
end
end