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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Ruby的語(yǔ)法和語(yǔ)言特性總結(jié)

2019-10-26 19:29:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Ruby是一種解釋型、面向?qū)ο蟆?dòng)態(tài)類(lèi)型的語(yǔ)言。Ruby采取的策略是在靈活性和運(yùn)行時(shí)安全之間尋找平衡點(diǎn)。隨著Rails框架的出現(xiàn),Ruby也在2006年前后一鳴驚人,同時(shí)也指引人們重新找回編程樂(lè)趣。盡管從執(zhí)行速度上說(shuō),Ruby談不上有多高效,但它卻能讓程序員的編程效率大幅提高。本文將講述Ruby語(yǔ)言的基礎(chǔ)語(yǔ)言特性,包括基本的語(yǔ)法及代碼塊和類(lèi)的定義。

1. 基礎(chǔ)
在Ruby交互命令行中輸入以下命令(>>為命令行提示符,=>為返回值;下文將把=>符號(hào)和語(yǔ)句寫(xiě)在一行內(nèi)表明其返回值):

>> puts 'hello, world'hello, world=> nil>> language = 'Ruby'=> "Ruby">> puts "hello, #{language}"hello, Ruby=> nil

以上代碼使用puts輸出,給變量賦值,并用#{}的語(yǔ)法實(shí)現(xiàn)字符串替換。這表明Ruby是解釋執(zhí)行的;變量無(wú)需聲明即可直接初始化和賦值;每條Ruby代碼都會(huì)返回某個(gè)值;單引號(hào)包含的字符串表示它將直接被解釋?zhuān)p引號(hào)包含的字符串會(huì)引發(fā)字符串替換。

1.1 編程模型

Ruby是一門(mén)純面向?qū)ο笳Z(yǔ)言,在Ruby中一切皆為對(duì)象,可以用“.”調(diào)用對(duì)象具有的方法,可以通過(guò)class和methods方法查看對(duì)象的類(lèi)型及支持的方法,如4.class => Fixnum,7.methods => ["inspect", "%", "<<", "numerator", ...],false.class => FalseClass(方括號(hào)表示數(shù)組)。

1.2 流程控制

條件判斷有正常的塊形式,也有簡(jiǎn)單明了的單行形式;除了常見(jiàn)的if語(yǔ)句外,還有unless語(yǔ)句(等價(jià)于if not,但可讀性更強(qiáng))。同理,循環(huán)也有正常的塊形式和單行形式。注意:除了nil和false之外,其他值都代表true,包括0!

# 塊形式if x == 4 puts 'This is 4.'end# 單行形式puts 'This is false.' unless truex = x + 1 while x < 10 # x的結(jié)果為10x = x - 1 until x == 1 # x的結(jié)果為1

和其他C家族的語(yǔ)言差不多,Ruby的邏輯運(yùn)算符and(&&)、or(||)都自帶短路功能,若想執(zhí)行整個(gè)表達(dá)式,可以用&或|

1.3 鴨子類(lèi)型

執(zhí)行4 + 'four'會(huì)出現(xiàn)TypeError的錯(cuò)誤,說(shuō)明Ruby是強(qiáng)類(lèi)型語(yǔ)言,在發(fā)生類(lèi)型沖突時(shí),將得到一個(gè)錯(cuò)誤。如果把個(gè)語(yǔ)句放在def...end函數(shù)定義中,則只有在調(diào)用函數(shù)時(shí)才會(huì)報(bào)錯(cuò),說(shuō)明Ruby在運(yùn)行時(shí)而非編譯時(shí)進(jìn)行類(lèi)型檢查,這稱為動(dòng)態(tài)類(lèi)型。Ruby的類(lèi)型系統(tǒng)有自己的潛在優(yōu)勢(shì),即多個(gè)類(lèi)不必繼承自相同的父類(lèi)就能以“多態(tài)”的方式使用:

a = ['100', 100.0]puts a[0].to_i # => 100puts a[1].to_i # => 100

這就是所謂的“鴨子類(lèi)型”(duck typing)。數(shù)組的第一個(gè)元素是String類(lèi)型,第二個(gè)元素是Float類(lèi)型,但轉(zhuǎn)換成整數(shù)用的都是to_i。鴨子類(lèi)型并不在乎其內(nèi)在類(lèi)型是什么,只要一個(gè)對(duì)象像鴨子一樣走路,像鴨子一樣嘎嘎叫,那它就是只鴨子。在面向?qū)ο笤O(shè)計(jì)思想中,有一個(gè)重要原則:對(duì)接口編碼,不對(duì)實(shí)現(xiàn)編碼。如果利用鴨子類(lèi)型,實(shí)現(xiàn)這一原則只需極少的額外工作,就能輕松完成。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 托里县| 甘泉县| 尤溪县| 中宁县| 南投县| 个旧市| 阿坝| 遂宁市| 南靖县| 双江| 漳平市| 平昌县| 武安市| 淄博市| 泸溪县| 织金县| 富平县| 永福县| 庐江县| 北海市| 五华县| 龙门县| 丹江口市| 金川县| 开封县| 鞍山市| 宣化县| 离岛区| 江西省| 牡丹江市| 渑池县| 紫阳县| 乌兰县| 宣武区| 达拉特旗| 青龙| 改则县| 兴义市| 祥云县| 敦化市| 饶平县|