[英]What is the purpose of `Kernel`?
Kernel
模块的目的是什么? 如果在Kernel
上定义的所有内容都是在Object
上定义的,并且没有像Kernel
这样的模块,会发生什么变化? Kernel
或Object
上定义它吗? 我将从一个问题开始:在一个典型的Kernel
方法(例如puts
会有什么样的self
? 最有意义的self
内部puts
可能是Ruby运行时本身。 类似于其他“真正想成为函数的方法”,如Array
或fork
。 因此,您可以将Kernel
视为一种倾向,这些方法或多或少是Ruby本身的命令或消息。
Kernel
也有奇怪的方法,如sub
和chop
,它们只对一次性ruby -e
脚本有用。 这些东西倾向于使用$_
作为隐含的self
但我认为它们可以被视为上面“Ruby运行时命令”的特殊情况。
当您希望能够在任何对象上调用该方法时,方法在哪里? 我会说它会进入Object
。 如果该方法实际上是伪装的函数并且没有有意义的self
,那么它将进入Kernel
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.