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

首頁 > 編程 > Ruby > 正文

ruby 模塊

2020-03-29 12:12:05
字體:
供稿:網(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è)計(jì)者也做了一個類似的選擇).  
 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人做爽爽爽爽免费国产软件 | 久久久久久久久久久久免费 | 欧美成人精品欧美一级 | 免费高清一级欧美片在线观看 | 国产成人精品免费视频大全最热 | 精品一区二区三区电影 | sesee99| 艹男人的日日夜夜 | 亚洲成在人 | 欧洲色阁中文字幕 | 久久精品性视频 | 蜜桃视频观看麻豆 | gogo全球大胆高清人露出91 | 一区国产在线观看 | 亚洲情在线 | 一级外国毛片 | 免费播放av | 国产孕妇孕交大片孕 | v片在线看 | 免费看黄色一级片 | 欧美一级片免费在线观看 | 欧美一区二区三区不卡免费观看 | 色视频在线播放 | av在线一区二区三区 | 99热久草| 精品国产一区二区三区久久久 | 99国产精品白浆在线观看免费 | 国产一区二区免费看 | 日韩黄色成人 | 高潮激情aaaaa免费看 | 亚洲日韩精品欧美一区二区 | 亚洲成人伊人 | 羞羞电影网 | 久久国产午夜 | 红杏网站永久免费视频入口 | 深夜免费福利视频 | 午夜视频在线观看免费视频 | 国产日韩中文字幕 | 日韩视频网址 | av在线在线 | 黄色片网站免费在线观看 |