class類是module的子類,類是一種特殊形式的模組,這個可看我的這篇文章 一步一步學ruby(五): class, module, object,kernel的關係。
我們知道最頂級的類是object,那麼最頂級的模組就是kernel
我們使用模組的的主要目的是用來組織**,模組化**,有點類似命名空間,但卻有很大的不同
一、建立和使用模組
用module關鍵字來定義模組
module沒有例項,我們使用時把module混合到類中來使用,我們也可以這麼理解,把module裡的內容拷貝乙份放到類裡,成為類的一部分
我們可以把模組放到乙個單獨的檔案裡,然後使用時進行載入,看下面的示例,假設我們有乙個project.rb的檔案,包含了project模組
我們將project混合到manager類裡
注意: 在使用require或load時,請求載入的內容放到引號裡,而inclue不是用引號,這是因為require或load使用字串做為引數,而include使用常量形式的模組名,require和load使用字串變數也可以.
二、混合進模組的類的方法查詢
上面say方法查詢路徑為 d類-->d類裡包含的模組-->c類-->c類包含的模組......>object-->kernel,當找到第乙個時,搜尋停止。
同名方法的查詢,後面覆蓋前面的
用super提公升查詢路徑(呼叫查詢路徑上下乙個匹配的方法),同樣我們使用super可以呼叫父類的同名方法,initialize是自動執行
三、模組和類可以相互巢狀
module也可以包含類,但呼叫時需要這樣使用 模組名::類名.new
一步一步學Ruby 十三 Ruby模組
class類是module的子類,類是一種特殊形式的模組,這個可看我的這篇文章 一步一步學ruby 五 class,module,object,kernel的關係。我們知道最頂級的類是object,那麼最頂級的模組就是kernel 我們使用模組的的主要目的是用來組織 模組化 有點類似命名空間,但卻有...
一步一步學Ruby 一 Ruby介紹
文章摘要 ruby是如何來的 ruby 的發明者松本行弘 yukihiro matz matsumoto,混合了他喜歡的語言 perl smalltalk eiffel ada 和 lisp 產生了一種具有函式式及指令程式設計特性的新語言。他常說,他是 試著讓 ruby 更自然,而不是簡單,就像生活...
一步一步學Ruby 一 Ruby介紹
文章摘要 ruby是如何來的 ruby 的發明者松本行弘 yukihiro matz matsumoto,混合了他喜歡的語言 perl smalltalk eiffel ada 和 lisp 產生了一種具有函式式及指令程式設計特性的新語言。他常說,他是 試著讓 ruby 更自然,而不是簡單,就像生活...