Ruby受歡迎的三十七個(gè)理由(下)
Ruby,一種為簡(jiǎn)單快捷的面向?qū)ο缶幊蹋嫦驅(qū)ο蟪绦蛟O(shè)計(jì))而創(chuàng)的腳本語(yǔ)言,在20世紀(jì)90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)開發(fā),遵守GPL協(xié)議和Ruby License。接上一篇>>
一、Ruby 關(guān)注細(xì)節(jié)。
Ruby 提供豐富的同義詞和別名。不記得對(duì)數(shù)組或字符串是用 size 還是 length 嗎??jī)蓚€(gè)都可以用。對(duì)于范圍(range),是用 begin 和 end ,還是 first 和 last?由您自選。您心里拼寫 indices ,而您的手卻拼出 indexes 嗎??jī)蓚€(gè)都可以用。
二、Ruby 具有靈活的語(yǔ)法特性。
在方法調(diào)用中可以忽略括號(hào),參數(shù)之間可以忽略逗號(hào)。Perl 風(fēng)格的引號(hào)允許我們定義數(shù)組或字符串時(shí)不必勞煩去敲那些引號(hào)和逗號(hào)(譯注:Ruby 中 a = [ 'ant', 'bee', 'cat' ] 可以簡(jiǎn)寫為 a = %w{ ant bee cat })。return 關(guān)鍵字也可以忽略。
三、Ruby 有豐富的程序庫(kù)可供使用。
Ruby 的程序庫(kù)提供了對(duì)線程、套接字(socket)、有限的對(duì)象永續(xù)機(jī)制、CGI、服務(wù)器端可執(zhí)行機(jī)制、DB 文件等許多功能的支持。Ruby 還對(duì) Tk 有所支持,今后會(huì)有更多的支持。
四、Ruby 有調(diào)試器(debugger)。
在完美世界里我們大約不需要調(diào)試器。可惜這并不是完美的世界。
五、Ruby 可通過(guò)交互的方式來(lái)使用。
Ruby 設(shè)計(jì)為可以將其當(dāng)作一種類似 Kornshell 的 shell 來(lái)使用。(這是本文中最令人質(zhì)疑的觀點(diǎn),而且我也不得不承認(rèn),Ruby 并不是真正非常優(yōu)秀的 shell。但我還是堅(jiān)持認(rèn)為,基于 Ruby 的 shell 是個(gè)不錯(cuò)的東西。)
六、Ruby 是精煉的語(yǔ)言。
Ruby 中沒有非必要的關(guān)鍵字,比如 Pascal 的 begin,if 之后的 then,while 之后的 do。不需要事先聲明變量,因?yàn)樽兞繜o(wú)類型。不需要為方法指定返回類型。不需要 return 關(guān)鍵字;方法會(huì)返回最后被求值的表達(dá)式之結(jié)果。另外一方面……Ruby 不像 C 或 Perl 那么晦澀。
七、Ruby 是面向表達(dá)的語(yǔ)言(expression-oriented)。
您可以像說(shuō)話一樣很容易寫出 x = if a<0 then b else c end 這樣的句子。
八、Ruby 語(yǔ)言中系結(jié)了 syntax sugar(語(yǔ)法糖)。
(轉(zhuǎn)述 Mary Poppins 的話說(shuō)就是:一勺語(yǔ)法糖可以壓一壓語(yǔ)義的藥味。"A spoonful of syntax sugar helps the semantic medicine go down.")只要您想,您就可以用 for a in x 來(lái)迭代遍歷數(shù)組 x,可以用 a += b 來(lái)代替 a = a + b。大多數(shù)操作符其實(shí)只是簡(jiǎn)化的方法表示、更加直覺的名稱以及更加方便使用的語(yǔ)法形式。
譯注:Mary Poppins 指的是美國(guó)1964年拍攝的經(jīng)典電影《歡樂滿人間(Mary Poppins)》。
九、Ruby 支持操作符重載(overloading)。
如果我沒記錯(cuò)的話,操作符重載源起自很久以前的 SNOBOL,但卻是由較近的 C++ 振興。這個(gè)機(jī)制可能會(huì)被濫用或誤用,但有總比沒有好。另外,Ruby 會(huì)自動(dòng)定義操作符的賦值(assignment)版本,比如說(shuō),您定義了操作符 + ,那么您就會(huì)自動(dòng)得到操作符 +=。
十、Ruby 具有無(wú)限精度的整數(shù)算法。
誰(shuí)還關(guān)心 short、int、long 呢? 使用 Bignum 就行了。承認(rèn)吧,您總還是想看看365的階乘是多少?,F(xiàn)在您可以看了。
十一、Ruby 具有冪運(yùn)算操作符。
在過(guò)去年代,我們?cè)?BASIC 和 FORTRAN 里使用過(guò)冪運(yùn)算操作符。但是后來(lái)我們學(xué)會(huì)了 Pascal 和 C 語(yǔ)言,知道了這個(gè)操作符邪惡的一面。(我們被告知,我們甚至都不曾知道求值是如何完成的——是使用了對(duì)數(shù)還是迭代?效率有多高?)可是我們真的關(guān)心這些么?如果是,我們可以編寫自己的版本。如果不是,Ruby 還提供了您珍愛的老好用的 ** operator 供您使用。享用它吧!
十二、Ruby 具有強(qiáng)大的字符串處理能力。
如果您想對(duì)字符串進(jìn)行搜索、替換、修改、格式化、截?cái)啵╰rim)、分隔(delimit)、追加(interpose),或者字元化(tokenize)等操作,您可以使用 Ruby 內(nèi)建的方法。如過(guò)內(nèi)建方法不能滿足要求,您可以利用內(nèi)建方法來(lái)建構(gòu)自己所需。
十三、Ruby 幾乎沒有違反自身規(guī)則的例外情況。
Ruby 的語(yǔ)法和語(yǔ)義比大多數(shù)語(yǔ)言更具自我完備性(self-consistent)。每種語(yǔ)言都有犄角旮旯,每種規(guī)則都有例外情況;但 Ruby 的旮旯和例外可能比您想象的要少。
到這,關(guān)于Ruby受歡迎的三十七個(gè)理由,就為大家介紹完了。希望對(duì)你有幫助。
【編輯推薦】