使用Ruby中的任何类并询问某些方法的定义:
Object.method :name
#<Method: Class(Module)#name>
好的,太好了。所以,我可以使用pry或者访问ruby-doc.org并阅读关于Module上定义的:name方法。
我的问题是,这里发生了什么:
Object.method :class
#<Method: Class(Kernel)#class>
我没有看到在内核模块上定义:class方法的位置。我看到它在Object类上定义。有人可以为我澄清一下吗?
答案 0 :(得分:6)
内核模块包含在Object类中,因此它的方法在每个Ruby对象中都可用。
内核实例方法记录在Object类中,而模块方法在此处记录。这些方法在没有接收器的情况下调用,因此可以以函数形式调用。