我试着理解模块......
我想在一个模块中隔离很多方法(只使用Namemodule.methodname访问它们)
这是我的代码:
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
require("./domparser.rb")
Domparser.method3
但是=> undefined method 'method3' for Domdecoder:Module (NoMethodError)
我有其他方法叫做“method1”和“method2”,这就是我想将它们分离成模块的原因。
method3
是我想在外面打电话的唯一方法。
谢谢。
答案 0 :(得分:2)
将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
的更多信息答案 1 :(得分:1)
好的,我将每个方法都放在一个类中,并且在方法名称前面有self.
。
class Domparser
def self.method1 name
puts "Ok : method1" + name
end
def self.method2
method1("John")
puts "Ok : method2 without name"
end
def self.method3
method2
puts "Ok : MAIN METHOD"
end
end
它有效。
Domparser.method3