在Ruby中声明“私有”/“受保护”时实际发生了什么?

前端之家收集整理的这篇文章主要介绍了在Ruby中声明“私有”/“受保护”时实际发生了什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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.

  1. If used with no arguments,the three functions set the default access control of subsequently defined methods.
  2. With arguments,the functions set the access control of the named methods and constants.

请参阅此处的文档

> Module.private
> Access Control

您正在寻找Module.private方法如何存在.关于它,Here is where that happenshere is some more information.从class.c中定义的rb_define_private_method开始,您必须阅读更多内容.

希望有所帮助!

原文链接:https://www.f2er.com/ruby/264862.html

猜你在找的Ruby相关文章