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

为什么rubys公共和私有关键字/方法返回Object?,ruby,Ruby,这个片段: a = private p a p a.class 给我: Object Class 我不确定private和public是否是Ruby中的关键字或方法,但是,为什么它们返回Object(我指的是类)?这种奇怪的行为有历史或现实的原因吗 我已经用Ruby 2.1、Rubinius 2.2.6和JRuby 1.7.12对此进行了测试。这是因为它们不是关键字,而是模块上定义的方法:。它们返回一个接收调用的模块,如果您在应用程序的顶层调用它,则此接收器是对象类。检查它在Rubinius

这个片段:

a = private
p a
p a.class
给我:

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


我已经用Ruby 2.1、Rubinius 2.2.6和JRuby 1.7.12对此进行了测试。

这是因为它们不是关键字,而是模块上定义的方法:。它们返回一个接收调用的模块,如果您在应用程序的顶层调用它,则此接收器是对象类。

检查它在Rubinius和JRuby上的行为是否相同非常重要。但它们的行为与MRI相同这一事实表明,这种行为与那些特定的实现无关,而是Ruby编程语言本身固有的行为,因此我删除了这些标记。好的,我只是想确保这不是标准Ruby解释器的奇怪行为;)非常感谢你!但我遗漏了一点:为什么它们返回
self
,而不是它们更改了可见性的方法?@le_me-它们不能返回它们更改为private的方法,因为在没有参数的情况下执行方法时,这些方法尚未定义
self
是从这些方法返回的唯一逻辑对象。