【问题标题】:ruby kernel method lookup in top level execution environment顶级执行环境中的 ruby​​ 内核方法查找
【发布时间】:2011-05-19 11:54:43
【问题描述】:

我理解在顶级执行环境中,selfObject 类的一些预定义对象。

puts self.class.inspect #=> Object

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

但是,为什么我找不到像这样的“puts”方法?

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

我期待true,因为KernelObject 中是included,谁能告诉我为什么它返回false

已解决

putsKernel中被定义为私有实例方法。

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

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

【问题讨论】:

    标签: ruby


    【解决方案1】:

    其中一个原因是

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

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

    我认为putsObject 中被声明为私有。

    【讨论】:

    • 谢谢,我知道了。 putsKernel 中被定义为私有实例方法。我想知道为什么Kernel的公共实例方法列表中的ruby核心文档列表puts
    猜你喜欢
    • 2018-04-08
    • 2020-07-04
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2011-09-19
    • 1970-01-01
    相关资源
    最近更新 更多