ruby - "public"和 "private"是类,而 "protected"不是?

标签 ruby

irb(main):001:0> public.class
=> Class
irb(main):002:0> private.class
=> Class

奇怪public的类是Classprivate也一样,让我继续测试:

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 真的是类吗?
  2. 为什么 protected 不同?

最佳答案

问题 1 的答案是否定的,publicprivate不是类,它们是模块上的方法,如 protected .不过,它们都返回 self,在您的示例中,它是 Class 的一个实例。

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

至于为什么 protected 的行为不同,我不知道。我怀疑它与顶级对象 (main) 及其行为方式有关。

例如,这段代码:

class Foo
  puts public
  puts private
  puts protected
end

产生这个输出,protected 没有错误:

Foo
Foo
Foo

关于ruby - "public"和 "private"是类,而 "protected"不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25938459/

相关文章:

ruby - 如何保存和展示 Dashing 的历史值?

mysql - 使用 parent_id 求和并分组

ruby-on-rails - I18n.locale 的 kaminari page_entires_info 错误

ruby-on-rails - 未使用 Ruby Rails 最新版本

ruby-on-rails - 使用 rails/webpacker 响应测试设置

ruby-on-rails - 公寓和设计不创建租户

ruby-on-rails - 克隆记录并将远程文件复制到新位置?

Ruby 和丢番图方程——散列问题

ruby-on-rails - (Rails) Nokogiri 从 URL 返回 nil

javascript - 如何使用 Ruby 规则验证 JavaScript 中的正则表达式?