为什么ruby的公共和私有关键字/方法返回Object



代码片段:

a = private
p a
p a.class

给我:

Object
Class

我不确定privatepublic是否在Ruby中是关键字或方法,但是,为什么它们返回Object(我的意思是类)?这种奇怪的行为有历史或现实的原因吗?

我已经在Ruby 2.1, Rubinius 2.2.6和JRuby 1.7.12上进行了测试。

这是因为它们不是关键字,而是Module: http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-private上定义的方法。它们返回一个接收调用的模块,如果你在应用程序的顶层调用它,这个接收者是Object类。

相关内容

最新更新