为什么 Ruby 告诉我 :class 是在 Class(内核)而不是对象上定义的?
Why does Ruby tell me that :class is defined on Class(Kernel) and not Object?
取Ruby中的任何class并询问它在哪里定义了某些方法:
Object.method :name
#<Method: Class(Module)#name>
好的,很好。因此,我可以使用 pry 或转到 ruby-doc.org 并阅读有关 Module 上定义的 :name 方法的信息。
我的问题是,这是怎么回事:
Object.method :class
#<Method: Class(Kernel)#class>
我没有看到 :class 方法在内核模块中的定义位置。我看到它在对象 class 上定义。有人可以为我澄清一下吗?
内核模块包含在 class 对象中,因此它的方法在每个 Ruby 对象中都可用。
内核实例方法记录在 class 对象中,而模块方法记录在此处。这些方法在没有接收器的情况下被调用,因此可以以函数形式调用。
取Ruby中的任何class并询问它在哪里定义了某些方法:
Object.method :name
#<Method: Class(Module)#name>
好的,很好。因此,我可以使用 pry 或转到 ruby-doc.org 并阅读有关 Module 上定义的 :name 方法的信息。
我的问题是,这是怎么回事:
Object.method :class
#<Method: Class(Kernel)#class>
我没有看到 :class 方法在内核模块中的定义位置。我看到它在对象 class 上定义。有人可以为我澄清一下吗?
内核模块包含在 class 对象中,因此它的方法在每个 Ruby 对象中都可用。
内核实例方法记录在 class 对象中,而模块方法记录在此处。这些方法在没有接收器的情况下被调用,因此可以以函数形式调用。