我将从一个问题开始:在一个典型的
Kernel
方法中,例如puts会有什么样的自我?最有意义的自我内部放置可能是Ruby运行时本身.类似于其他“真正想要成为
函数的
方法”,如
Array
或
fork
.因此,您可以将内核视为对Ruby本身或多或少的命令或消息的
方法的转储基础.
内核也有奇怪的方法,如sub
和chop
,它们只适用于一次性ruby -e脚本.这些东西倾向于使用$_作为隐含的自我,但我认为它们可以被视为上面“Ruby运行时命令”的特殊情况.
当您希望能够在任何对象上调用该方法时,方法在哪里?我会说它会进入Object.如果该方法实际上是伪装的函数并且没有有意义的自我,那么它将进入内核.