国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 阳东县| 通榆县| 托克托县| 苗栗市| 巫山县| 增城市| 松原市| 福鼎市| 芦山县| 肇庆市| 上杭县| 桦甸市| 饶河县| 龙岩市| 三原县| 政和县| 永康市| 邯郸县| 建瓯市| 洛宁县| 那坡县| 峨眉山市| 盐池县| 收藏| 搜索| 萨嘎县| 梓潼县| 武功县| 丹江口市| 德惠市| 巴南区| 嘉义县| 望江县| 剑河县| 西吉县| 桓台县| 华阴市| 乐亭县| 万安县| 茌平县| 英德市|