1
在Metaprogramming Ruby書中,我可以跨越超類和類的概念。 這裏是參考圖像:Ruby類中的超類是'Object',但'Class'是'Module
據我所知:類具有限定超一個實例方法,它可以由下式定義(此處MyClass的)
任何新的類被稱爲我的問題是:
父母類有超類爲模塊但對象MyClass的超類爲對象。爲什麼超類的Myclass是對象但不是模塊?如果是通過設計,爲什麼這樣設計?
在Metaprogramming Ruby書中,我可以跨越超類和類的概念。 這裏是參考圖像:Ruby類中的超類是'Object',但'Class'是'Module
據我所知:類具有限定超一個實例方法,它可以由下式定義(此處MyClass的)
任何新的類被稱爲我的問題是:
父母類有超類爲模塊但對象MyClass的超類爲對象。爲什麼超類的Myclass是對象但不是模塊?如果是通過設計,爲什麼這樣設計?
如果您在Ruby中定義一個新類Foo
,那麼的確,這是Class
類的一個實例,並Foo.class.superclass
是Module
預期。但既然你問不是的Foo.class
祖先,而是直接有關的Foo
祖先,後來才知道,
class Foo
end
是一樣的書寫
class Foo < Object
end
換句話說,新定義的類將默認成爲Object
類的子類,除非另有說明。當然,您可以手動定義
class Bar < Module
end
爲了創建Module
類的顯式子類。 Module
類的後裔具有特定的特性,並且在Ruby中特別有用。請注意,類Class
不能被分類。