irb(main):001:0> public.class
=> Class
irb(main):002:0> private.class
=> Class
奇怪public
的类是Class
,private
也一样,让我继续测试:
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>'
呃,现在我更糊涂了。所以我的问题是:
public
和private
真的是类吗?- 为什么
protected
不同?
最佳答案
问题 1 的答案是否定的,public
和 private
不是类,它们是模块上的方法,如 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/