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

ruby – “公共”和“私人”是课程,而“受保护”不是?

发布时间:2020-12-17 02:23:10 所属栏目:百科 来源:网络整理
导读:irb(main):001:0 public.class= Classirb(main):002:0 private.class= Class 我很惊讶公共课是班级,私人也一样,让我继续考试: irb(main):003:0 protected.classNameError: undefined local variable or method `protected' for main:Object from (irb):3 fr
irb(main):001:0> public.class
=> Class
irb(main):002:0> private.class
=> Class

我很惊讶公共课是班级,私人也一样,让我继续考试:

irb(main):003:0> protected.class
NameError: undefined local variable or method `protected' for main:Object
        from (irb):3
        from D:/Ruby2.0.0/bin/irb:12:in `<main>'

呃,现在我更困惑了.所以我的问题是:

>公共和私人真的是课吗?
>为什么保护不同?

解决方法

问题1的答案是否定的,publicprivate不是类,它们是Module上的方法,protected也是如此.它们都返回self,在您的示例中是Class的实例.

2.1.2 :006 > defined? public
 => "method"

至于为什么受保护的行为不同,我不知道.我怀疑它与顶级对象(主要)以及它的行为方式有关.

例如,这段代码:

class Foo
  puts public
  puts private
  puts protected
end

产生这个outut,没有受保护的错误:

Foo
Foo
Foo

(编辑:李大同)

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

    推荐文章
      热点阅读