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