在ruby中隐藏模块方法的最佳方法是什么?

时间:2015-03-09 16:59:32

标签: ruby

在JavaScript中,关闭时隐藏功能或变量很容易 在ruby中,私有不适用于Module方法 这样做有最好的做法吗?

module Lib

  def self.public_function
    private_function
  end

  private # Does not work
  def self.private_function

  end

end

Lib.public_function

我已阅读此帖:Private module methods in Ruby
但对我来说,最好的答案并不简单。

3 个答案:

答案 0 :(得分:4)

module Lib

  def self.private_function
   puts "k"
  end

  private_class_method(:private_function)

end

Lib.private_function #=> NoMethodError

答案 1 :(得分:2)

private只会使接收者成为隐含的​​,并且不适合隐藏方法。 protected使方法只能在接收者类的上下文中访问,并且更好地用于隐藏方法。

答案 2 :(得分:1)

您可以使用宏private_class_method在模块中实现私有方法,如下所示:

def self.private_function
end
private_class_method :private_function