在
Ruby类定义中声明private / protected时实际发生了什么?它们不是
keywords,所以这意味着它们必须是方法调用,但我无法找到它们的定义位置.它们似乎没有记录.声明私有/受保护方法(如下所示)的两种不同方式是否以不同方式实现? (第二种方式显然是方法调用,但这在第一种方式中并不那么明显.)
class Foo private def i_am_private; end def so_am_i; end end class Foo def i_am_private; end def so_am_i; end private :i_am_private,:so_am_i end
解决方法
两者都是方法调用.引自
docs:
Each function can be used in two different ways.
- If used with no arguments,the three functions set the default access control of subsequently defined methods.
- With arguments,the functions set the access control of the named methods and constants.
请参阅此处的文档
> Module.private
> Access Control
您正在寻找Module.private方法如何存在.关于它,Here is where that happens和here is some more information.从class.c中定义的rb_define_private_method开始,您必须阅读更多内容.
希望有所帮助!