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
这是一个模块混合策略,适用于模块外部或内部的任何类。请阅读 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