国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ruby 模塊

2019-10-26 19:22:06
字體:
供稿:網(wǎng)友
 Ruby的模塊非常類似類,除了:



模塊不可以有實(shí)體 

模塊不可以有子類 

模塊由module...end定義.


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

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

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


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

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


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

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

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

模塊的使用令到我們獲得多重繼承的基本功能卻可通過簡單的樹結(jié)構(gòu)表述類關(guān)系,同時也可觀地簡化了語言的實(shí)現(xiàn)(Java的設(shè)計者也做了一個類似的選擇).  
 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 广丰县| 绥芬河市| 芮城县| 鄯善县| 克什克腾旗| 宁武县| 静安区| 忻城县| 韶山市| 灵璧县| 彰化县| 运城市| 肇源县| 乌拉特后旗| 南部县| 和政县| 阳泉市| 吉木乃县| 乐亭县| 梓潼县| 同心县| 郑州市| 尚志市| 彝良县| 将乐县| 泸水县| 耿马| 鄂州市| 拉萨市| 措勤县| 洛浦县| 宜宾市| 宁河县| 调兵山市| 灵宝市| 大洼县| 仙桃市| 榆中县| 河东区| 茌平县| 老河口市|