在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
但对我来说,最好的答案并不简单。
答案 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