module AA
def func1()
end
class BB
def method2()
func1()
end
end
end
目前method2
无法找到func1
并引发异常。
为什么会发生这种情况?正确的方法是什么?
答案 0 :(得分:1)
出现这种情况有几个原因。
首先,因为属于AA
模块的内容不属于BB
类。
其次,定义func1
的语法不太正确。
请参阅下面的示例,定义函数(2种不同的方式)并调用它。
module AA
def self.func1
end
def AA.func2
end
class BB
def method2()
AA::func1()
end
end
end
答案 1 :(得分: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
答案 2 :(得分:0)
或者您可以使用extend
:
module AA
def func1()
end
class BB
extend AA
def method2()
func1()
end
end
end