我繼續關於Ruby的研究,並且發生了另一個問題。我知道當我們在一個類上定義一個類方法時,它創建了一個單例類來獲得該方法的定義,並且從那以後,該方法是該單例類的一個實例方法(我從測試中得到了這個結論,但我可能是錯的,所以請隨時糾正我)。一個類如何調用一個在單例類中定義的類方法?
我的問題是,如果方法是作爲該類的實例方法在單例類上定義的,我如何使用X.classMethod調用類X上的類方法(我不問我該如何去做。這是發生了什麼。)。它讓我更加困惑,因爲我注意到(運行一些測試)一個類的單例類與它所來自的類甚至沒有層次關係,因此,如何將類方法調用解析爲單例類?更確切地說,該類如何在沒有任何實例的實例方法的單例類上調用一個方法。
我希望我不會混淆你。
再次感謝您。
的確如此,但是,如果#bar是Foo的單例類的實例方法,如果沒有單例類的實例需要調用它怎麼會被調用? – BrunoMCBraga
@returnFromException你明白了嗎? –
退貨,需要證明? 'Foo.singleton_class.new#=> TypeError:無法創建單例類的實例' –