我理解在顶级执行环境中,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
中的included
是Object
,有人可以告诉我它返回false
的原因吗?
puts
被定义为Kernel
中的私有实例方法。
Kernel.private_instance_methods.include?(:puts) #=> true
我想知道为什么ruby核心文档在puts
的公共实例方法列表中有列表Kernel
答案 0 :(得分:1)
其中一个原因是
Kernel.instance_methods.include? :puts #=> false
和
self.private_methods.include? :puts #=> true
我认为puts
中Object
被声明为私有。