我试着理解模块...
我想在一个模块中隔离许多方法(仅使用 Namemodule.methodname 访问它们)
这里是我的代码:
domparser.rb
module Domparser
def method1 name
puts "Ok : method1" + name
end
def method2
method1("John")
puts "Ok : method2 without name"
end
def method3
method2
puts "Ok : MAIN METHOD"
end
end
主.rb
require("./domparser.rb")
Domparser.method3
但是 => Domdecoder:Module (NoMethodError) 的未定义方法“method3”
我还有其他方法称为“method1”和“method2”,这就是为什么我想将它们隔离到一个模块中。
method3
是我想在外部调用的唯一方法。
谢谢。
最佳答案
将 module_function
用于您希望直接在模块上访问的方法
module Domparser
def method1 name
puts "Ok : method1" + name
end
def method2
method1("John")
puts "Ok : method2 without name"
end
def method3
method2
puts "Ok : MAIN METHOD"
end
module_function :method3
end
现在您可以访问模块上的 method3 以及包含此模块的类的实例方法
Domparser.method3
关于 module_function 的更多信息 here
关于ruby - 将静态方法隔离到模块中?可能的 ? "undefined method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677948/