[英]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.