public.class => Class irb(main):002:0> private.class => Class 奇怪public的类是Class,priv-6ren">
gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:56 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com