为什么rubys public和private关键字/方法返回Object?

le_*_*_me 4 ruby

这个片段:

a = private
p a
p a.class
Run Code Online (Sandbox Code Playgroud)

给我:

Object
Class
Run Code Online (Sandbox Code Playgroud)

我不知道是否privatepublic是关键字或方法在Ruby中,但是,为什么他们返回Object(我指的是类)?这种奇怪的行为有历史或实际原因吗?

我用Ruby 2.1,Rubinius 2.2.6和JRuby 1.7.12测试了这个.

Bro*_*tse 6

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