顶级执行环境中的ruby内核方法查找

时间:2010-12-03 00:45:28

标签: ruby

我理解在顶级执行环境中,self是类Object的预定义对象。

puts self.class.inspect #=> Object

并且

puts self.class.ancestors.inspect #=> [Object, Kernel, BasicObject]

但是,为什么我找不到这样的方法'put'?

puts self.class.instance_methods.include?(:puts) #=> false

我期待true,因为Kernel中的includedObject,有人可以告诉我它返回false的原因吗?

解决

puts被定义为Kernel中的私有实例方法。

Kernel.private_instance_methods.include?(:puts)  #=> true

我想知道为什么ruby核心文档在puts的公共实例方法列表中有列表Kernel

1 个答案:

答案 0 :(得分:1)

其中一个原因是

Kernel.instance_methods.include? :puts #=> false

self.private_methods.include? :puts #=> true

我认为putsObject被声明为私有。