我們使用模組的的主要目的是用來組織**,模組化**,有點類似命名空間,但卻有很大的不同
一、建立和使用模組
用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
(補充1)Ruby中的p puts print對比
p 和puts 是ruby 中特別常用的方法,很多童鞋可能認為它們是差不多的,使用的時候也不加注意,但是仔細考究起來,它們是有明顯差別的。先舉乙個例子 class foo def inspect foo from inspect end def to s foo from to s endend f...
Ruby學習筆記四 模組
一 模組定義及引用,模組就是一段 裡面有一些方法放一起。定義模組用module.end 模組與類非常相似,但是 a 模組不可以有例項物件 b 模組不可以有子類。include math puts sqrt 91 module me def sqrt a puts a a return a a end...
Ruby 學習筆記 1 有疑問
puts 演示while not a 1while not a 10 print a,a 1 endputs for i in 1.10 print i,endputs puts 演示break c a for i in 1.4 if i 2 and c a c b print n break en...