ruby - 将静态方法隔离到模块中?可能的 ? "undefined method"

标签 ruby

我试着理解模块...

我想在一个模块中隔离许多方法(仅使用 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/

相关文章:

ruby - 在 Ruby 中传递任意数量的 lambda(或 proc)

ruby - 如何为我的 RoR 应用程序指定用户特定的 gem?

ruby - Ruby on Rails 3.0 中模型的翻译

ruby-on-rails - 使用 mini_magick 调整图像大小

Ruby - 如何获取当前用户的时间?

python - BigQuery查询限制上下限

Ruby url解析——判断一个url是否在同一个文件夹下

ruby - Net::HTTP 在 Ruby 中获取超时

ruby - 遏制 + Mechanize = 段错误?

ruby-on-rails - 为什么在 html.erb 中未声明的@variables nil 而不是 NameError