private
一种风格是将方法组合在一起,这样protected
每个类最多只能使用一次。另一种风格是在方法定义之后立即指定可见性:
class Example
def my_private_method
end
private :my_private_method
def my_public_method
end
end
从 Ruby 2.1.0 开始def
,方法名称作为符号返回,因此可以使用更流线型的样式:
class Example
private def my_private_method
end
def my_public_method
end
protected def my_protected_method
end
private_class_method def self.my_private_class_method
end
end
(请注意,我们使用private_class_method
类方法——否则我们会得到NameError: undefined method
,因为private
需要一个实例方法。即使在原始示例中将它用作宏时,它也只会影响实例方法的可见性。)
我最喜欢这种内联可见性样式,因为它允许您根据需要组织方法。它降低了在错误位置添加新方法并无意中将其设为私有的风险。
至于类方法语法,你可以这样处理:
class Example
private def my_private_method
end
class << self
private def my_private_class_method
end
end
end