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

时间:2014-05-21 20:43:57

标签: ruby

此片段:

a = private
p a
p a.class

给了我:

Object
Class

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

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

1 个答案:

答案 0 :(得分:6)

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