麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

Ruby中關于模塊的一些基礎知識

2020-10-29 19:38:06
字體:
來源:轉載
供稿:網友

模塊與類很相似,它也可以說成是“不能被實例化的類”。由于Class類是Module類的子類,所以說成是“類=模塊+實例化能力”也許更好。

所謂模塊,究竟是用來干什么的呢?其作用主要有兩大類:Mix-in和命名空間。

Mix-in實際上是受限制的多重繼承。利用實際做成的繼承關系,可以實現對某些類進行一些“點綴”的目的。事實上,Mix-in這種說法就來自于在冰激凌上面的餅干或者堅果。

在面向對象設計的歷史中,由多重繼承機制造成的問題早已眾所周知了。所以,很多現代的面向對象設計語言都只支持單一繼承的方式。Ruby就是采用的這種方式。

但是,多重繼承機制也有不能被割舍的魅力。因此Ruby通過采用Mix-in的方式引入了很多多重繼承的優點。

一個類如果同時繼承了多個類,就會很容易在面向對象設計上出現很多問題。因此,Ruby加入了以下限制:

1、 只能繼承一個類

2、 可以繼承多個所謂的“像類但不是類”的模塊

此外,Ruby把“在類中加入模塊”的動作稱為include。

模塊的另一個功能是提供命名空間

在大規模的程序開發中,命名沖突的問題經常會出現。比如讀者在程序中需要制作一個名為Service的類,但是Service這個名字卻已經在程序庫中被使用了,這就是命名沖突的問題。

在很多現代的編程語言中,為了避免命名沖突的問題,基本上都提供了命名空間或者包的功能。在不同的命名空間中存在的Service類雖然類名相同,但是會被作為不同的對象來處理。

在Ruby中,通常會利用模塊來提供這樣的命名空間。
 

class Service; endmodule Library  class Service; endend

 最開始的Service類屬于Top Level的命名空間,后面的Service類則屬于Library模塊。

這其實就是Top Level和Library模塊中分別定義了名為Service的常量(類名實際上是指向class對象的常量)。

因此,在使用時就像使用常量一樣。
 

::Service       #Top Level的ServiceLibrary::Service  #Library的Service

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产合集91合集久久日 | 免费嗨片首页中文字幕 | 国产亚洲精品久久午夜玫瑰园 | 久久精品国产亚洲7777小说 | 欧美自拍| 国产做爰 | 亚洲成人福利电影 | 逼特逼视频在线观看 | 成人性爱视频在线观看 | 久久久久久久一区二区三区 | 高清做爰免费无遮网站挡 | 91在线视频观看 | 欧美精品国产综合久久 | 91精品久久久久久久久网影视 | 欧美成人一区免费视频 | 国产91免费看 | 久久久久国产成人精品亚洲午夜 | 成人福利视频在 | 成人午夜激情网 | 欧美三级短视频 | 免费观看一级淫片 | 国产精品久久久久久久久久东京 | 国产精品免费久久久久久 | 欧美精品日日鲁夜夜添 | 欧美激情精品久久久久久黑人 | 销魂美女一区二区 | 午夜爱爱福利 | 3xxx | 午夜亚洲视频 | 最近免费观看高清韩国日本大全 | 91精品国产91久久久久久 | 91一区二区三区久久久久国产乱 | 青草久久av | 麻豆视频网 | 欧美福利视频一区二区三区 | a视频在线播放 | 久久久综合久久久 | 亚洲码无人客一区二区三区 | 国产精品剧情一区二区三区 | 狠狠色成色综合网 | 久草在线资源观看 |