說我要修補的Kernel
模塊與一個方法我只是想出了Ruby的內核模塊的方法但我也可以做以下我通常不應該做的事情:作爲Object類的方法
Object.say_hello # => hello world
由於Object
包括Kernel
它採用其實例方法,因此所有Object
實例都應響應say_hello
。到現在爲止還挺好。
然而Object.say_hello
似乎是一個類的方法,如果我們做了類似的事情這可能纔是合理的:
class << Object
def say_hello
puts "hello world"
end
end
存儲在Object
的單例類say_hello
將允許我們使用它作爲一個類方法,而是Kernel
只包含在Object
中,不應該允許這種行爲。但它確實如此。有人知道爲什麼嗎?
感謝
這很簡單:''Object''是'Class',它是'Object'。這就是爲什麼它響應'say_hello' :) –