二十分鐘 教你Ruby快速入門(mén) 圖文教程第4/4頁(yè)
更新時(shí)間:2007年10月20日 18:58:18 作者:
!"將使用這個(gè)參數(shù)進(jìn)行輸出。
大多數(shù)其它的編程語(yǔ)言使用循環(huán)遍歷列表,下面是C語(yǔ)言的循環(huán)示例:

上面的代碼顯然可以工作,但它不夠“優(yōu)雅”!你不得不用i這個(gè)多余的循環(huán)變量,還需要指出列表的長(zhǎng)度,然后再解釋如何遍歷列表。
Ruby的迭代方式則更加優(yōu)雅,所有的內(nèi)部管理細(xì)節(jié)都隱藏在each方法中,你所需做的就是告訴它如何處理其中的每個(gè)成員。
塊(block),Ruby邊緣的高亮點(diǎn)!
塊(block)的真正優(yōu)勢(shì)在于:能夠處理比列表更加復(fù)雜的對(duì)象。除了在方法中可以處理簡(jiǎn)單的內(nèi)部管理細(xì)節(jié)外,你還能處理setup、teardown和所有錯(cuò)誤,而不讓用戶有所察覺(jué)。

say_bye方法沒(méi)有使用each,而是檢查@names是否具有join方法,如果具有join方法,則調(diào)用join方法。否則它將直接打印@names變量。
此方法并不關(guān)心變量的實(shí)際類型,這依賴于它所支持的那些被稱為“Duck Typing”的方法:duck typing是動(dòng)態(tài)類型的一種形式:變量的值自身隱含地決定了了變量的行為。這暗示了某個(gè)對(duì)象與其它實(shí)現(xiàn)了相同接口的對(duì)象之間是可交換的,不管對(duì)象之間是否具有繼承關(guān)系。鴨子測(cè)試(duck test)是對(duì)duck typing的一種形象比喻——“如果它走路像鴨子,那么也一定像鴨子一樣呷呷地叫,那么它必定是一只鴨子”。duck typing是某些編程語(yǔ)言的特性:如Smalltalk, Python, Ruby, ColdFusion。
Duck Typing的益處是無(wú)需對(duì)變量的類型進(jìn)行嚴(yán)格地限制,如果某人使用一種新類型的列表類,只要它實(shí)現(xiàn)了與其它列表相同語(yǔ)義的join方法,便可以拿來(lái)使用。
啟動(dòng)腳本
文件上半部分是MegaGreeter類的代碼,而后面剩下的部分則是對(duì)這些類方法的調(diào)用。而這是我們最后值得注意的一點(diǎn):

__FILE__是一個(gè)“具有魔力”的變量,它代表了當(dāng)前文件名。$0是用于啟動(dòng)程序的文件名。那么代碼“if __FILE__ == $0”便意味著檢查此文件是否為將被使用的主程序文件。這樣做可以使程序文件作為代碼庫(kù)使用,而不是可執(zhí)行代碼;但當(dāng)此文件被用作執(zhí)行文件時(shí),也可被執(zhí)行。
如何進(jìn)一步學(xué)習(xí)Ruby
到此便是本入門(mén)的尾聲了。當(dāng)然還有許多值得瀏覽的:Ruby提供的各種不同的控制結(jié)構(gòu);塊和yield的使用;模塊作為mixins使用等。希望這次Ruby初體驗(yàn)?zāi)苁鼓銓?duì)Ruby更感興趣。
注:mixin在面向?qū)ο缶幊陶Z(yǔ)言中是一種提供某些功能給子類繼承的類,但mixin并不能實(shí)例化。從某個(gè)mixin繼承并不是什么特殊的形式,而它更適于收集功能。某個(gè)子類甚至可以通過(guò)繼承一個(gè)或者多個(gè)mixin選擇繼承它的全部或者多數(shù)功能。一個(gè)mixin能延期定義和綁定方法直到運(yùn)行時(shí),而屬性和實(shí)例參數(shù)也將在編譯時(shí)才被定義。這不同于多數(shù)常見(jiàn)的方式:定義所有的屬性、方法,并在編譯時(shí)進(jìn)行初始化。
您可能感興趣的文章:
- Ruby學(xué)習(xí)筆記之gem 命令詳解
- Ruby rails 頁(yè)面跳轉(zhuǎn)(render和redirect_to)
- Ruby 字符串處理
- RUBY 新手教程 跟我一起學(xué)ruby
- 學(xué)習(xí)Ruby你需要了解的相關(guān)知識(shí)(rvm, gem, bundle, rake, rails等)
- Ruby中執(zhí)行Linux shell命令的六種方法詳解
- 淘寶網(wǎng)提供的國(guó)內(nèi)RubyGems鏡像簡(jiǎn)介和使用方法
- 詳解Ruby中正則表達(dá)式對(duì)字符串的匹配和替換操作
- Ruby Gems更換淘寶源方法
- Windows下Ruby on Rails開(kāi)發(fā)環(huán)境安裝配置圖文教程
- ruby 學(xué)習(xí)筆記(2) 類的基本使用
- ruby 異常處理:rescue
- CentOS 6.3下編譯安裝Ruby 2.0筆記
- Ruby中的return、break、next詳解
- 舉例講解Ruby中require的使用方法
- 更改RubyGem安裝源
- 使用Ruby來(lái)處理JSON的簡(jiǎn)單教程
- Ruby信號(hào)處理詳解
相關(guān)文章
Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取
這篇文章主要介紹了Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取,Watir是一個(gè)使用Ruby實(shí)現(xiàn)的開(kāi)源Web自動(dòng)化測(cè)試框架,需要的朋友可以參考下2016-03-03Ruby與Ruby on Rails框架環(huán)境搭建的簡(jiǎn)明教程
這篇文章主要介紹了Ruby與Ruby on Rails框架環(huán)境搭建的簡(jiǎn)明教程,包括RubyGems的升級(jí)與OpenSSL的支持等配置,需要的朋友可以參考下2016-05-05Ruby 中關(guān)于日文轉(zhuǎn)UTF-8及半角全角轉(zhuǎn)換的技巧
Ruby 中關(guān)于日文轉(zhuǎn)UTF-8及半角全角轉(zhuǎn)換的技巧,實(shí)現(xiàn)代碼。2009-05-05Ruby實(shí)現(xiàn)網(wǎng)頁(yè)圖片抓取
本文給大家分享的是個(gè)人使用ruby編寫(xiě)的抓取網(wǎng)頁(yè)圖片的代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2016-04-04