加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:17:29 所属栏目:百科 来源:网络整理
导读:在 Ruby类定义中声明private / protected时实际发生了什么?它们不是 keywords,所以这意味着它们必须是方法调用,但我无法找到它们的定义位置.它们似乎没有记录.声明私有/受保护方法(如下所示)的两种不同方式是否以不同方式实现? (第二种方式显然是方法调用,
在 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 happens和here is some more information.从class.c中定义的rb_define_private_method开始,您必须阅读更多内容.

希望有所帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读