a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Ruby > 正文

ruby 模塊

2020-10-29 19:47:39
字體:
來源:轉載
供稿:網友
 Ruby的模塊非常類似類,除了:



模塊不可以有實體 

模塊不可以有子類 

模塊由module...end定義.


實際上...模塊的'模塊類'是'類的類'這個類的父類.搞懂了嗎?不懂?讓我們繼續看下去吧.

模塊有兩種用法.其一是將相近的方法和實體放在一個相對集中的域里.Ruby標準包里的Math模塊就扮演著這一角色:

ruby> Math.sqrt(2)
   1.41421
ruby> Math::PI
   3.14159  


::操作符告訴 Ruby 解釋器在哪里找常數的值(可以想像,Math外的其它模塊用PI表示其它的一些東西).如果我們想省掉 :: 直接調用一個模塊的方法和常數,我們可以用 include:

ruby> include Math
   Object
ruby> sqrt(2)
   1.41421
ruby> PI
   3.14159  


模塊的另一用法是糅和(mixin).某些OO語言,包括C++,允許多重繼承(multiple inheritance),即從多個的父類里繼承. 現實世界里一個多重繼承的例子是鬧鐘:你可以想像鬧鐘屬于鐘類同是屬于帶蜂音器的事物類.

Ruby并未特意實現真正的多重繼承,但糅和技術是一很好的替代.記得模塊無法實體化或子類化;但如果我們在類定義里include一個方法,
它的方法便實際上已加入,或"糅合"進這個類.

糅合可以視為一種尋求一切我們希望得到的特定屬性的方法.舉個例子,如果一個類有個 each 方法,把標準庫里的Enumerable模塊糅合進來就自然地賦予我們 sort 和 find 兩個方法.

模塊的使用令到我們獲得多重繼承的基本功能卻可通過簡單的樹結構表述類關系,同時也可觀地簡化了語言的實現(Java的設計者也做了一個類似的選擇).  
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美全黄 | 久久久久久一区二区 | 在线色网| 日本中文字幕一区二区有码在线 | 青青草视频在线观看 | 欧美亚洲另类在线 | www嫩草 | 99视频在线免费观看 | 午夜高清视频 | 日本色一区 | 国产伦理一区二区 | 色婷婷av一区二区三区软件 | 在线黄av| 久久久一区二区三区 | 久久免费看 | 久久九九精品久久 | 国产高清不卡在线 | 久久五月天色 | 四虎国产精品成人免费4hu | 看黄网址 | 亚洲精品久久久久久下一站 | 成人午夜在线 | 国产伦精品一区二区 | 久久久精品欧美 | 在线视频这里只有精品 | 久久综合中文字幕 | 成人日韩| 手机看片在线 | 欧美一区二区 | 亚洲精品电影 | 亚洲精品免费在线观看 | 欧美日韩色图 | 国产在线一区二区三区在线观看 | 亚洲视频中文字幕 | 99久久婷婷 | 亚洲免费一区二区 | 国产精品久久久久久中文字 | 国产视频亚洲精品 | 国产探花在线看 | 欧美亚洲在线 | 日韩精品一区二区在线观看 |