一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Ruby - 二十分鐘 教你Ruby快速入門 圖文教程

二十分鐘 教你Ruby快速入門 圖文教程

2019-11-17 19:38Ruby教程網(wǎng) Ruby

突然發(fā)現(xiàn),ruby也不錯(cuò),我有點(diǎn)打算想學(xué)下了 介紹 這是一個(gè)短小的 Ruby 入門,完全讀完只需20分鐘。這里假設(shè)讀者已經(jīng)安裝了Ruby,如果你沒有安裝的話,請?jiān)陂喿x文前訪問Ruby官方網(wǎng)站進(jìn)行下載并安裝。 交互式的Ruby 打開IRB(交互式

突然發(fā)現(xiàn),ruby也不錯(cuò),我有點(diǎn)打算想學(xué)下了

介紹

這是一個(gè)短小的Ruby入門,完全讀完只需20分鐘。這里假設(shè)讀者已經(jīng)安裝了Ruby,如果你沒有安裝的話,請?jiān)陂喿x文前訪問Ruby官方網(wǎng)站進(jìn)行下載并安裝。

交互式的Ruby

打開IRB(交互式Ruby外殼):

如果你使用Mac OS X,那么請打開終端窗口輸入irb;

如果你使用Linux,那么請打開shell輸入irb;

如果你使用windows,那么請?jiān)陂_始菜單中找到Ruby->fxri,并執(zhí)行它。

二十分鐘 教你Ruby快速入門 圖文教程

Ok,在打開IRB之后,在其中輸入"Hello World"。

二十分鐘 教你Ruby快速入門 圖文教程

Ruby聽從你的安排!

發(fā)生了什么?我們剛才編寫了世界上最短小的“Hello World”程序嗎?這么說不太確切。第二行輸出是IRB告訴我們:上一個(gè)表達(dá)式的評估結(jié)果。如果我們希望打印出“Hello World”,那么就還需要一點(diǎn)努力:

二十分鐘 教你Ruby快速入門 圖文教程

puts在Ruby中是一個(gè)簡單的打印輸出命令。后面的“=> nil”表示什么?——那是表達(dá)式的結(jié)果。Puts總是返回nil,這是Ruby中表示“絕對無值”(absolutely-positively-nothing value)的方式,看上去有些類似Java中的null。

你的免費(fèi)計(jì)算器在這里!

無需做什么,我們就能把IRB作為一個(gè)簡單的計(jì)算器使用:

二十分鐘 教你Ruby快速入門 圖文教程

這樣就能計(jì)算3+2。夠簡單的!那么3乘以2如何?你可以在下面繼續(xù)輸入3*2,也可以回到上面(3+2處)重新修改你剛剛輸入的計(jì)算公式。使用鍵盤上的向上鍵,使光標(biāo)到達(dá)3+2那一行,再用左鍵移動光標(biāo)到加號上,然后使用空格鍵進(jìn)行修改。

二十分鐘 教你Ruby快速入門 圖文教程

下面,讓我們嘗試計(jì)算3的平方:

二十分鐘 教你Ruby快速入門 圖文教程

在Ruby語言中,**表示冪運(yùn)算。那么如何計(jì)算平方根呢?

二十分鐘 教你Ruby快速入門 圖文教程

Ok,等一下,表達(dá)式中的sqrt(9)表示什么?你一定能猜到這是計(jì)算9的平方根。而Math表示什么?不要著急,下面就讓我們進(jìn)一步了解像Math這樣的模塊。

模塊——按照主題分組的代碼

Math是Ruby內(nèi)建的數(shù)學(xué)模塊。在Ruby中,模塊提供了兩種角色:一種角色是將類似的方法聚集在同一個(gè)“家族”名下。因此,Math也包括sin、tan這樣的方法。第二種角色是一個(gè)圓點(diǎn)(dot),它標(biāo)記了消息的接收者。什么是消息?在上面的例子中,sqrt(9)便是消息,它意味著調(diào)用sqrt方法取出9的平方根。

Sqrt方法調(diào)用的結(jié)果是3.0。你可能注意到它并不是3。這是因?yàn)槎鄶?shù)情況下,數(shù)字的平方根并不是整數(shù),所以這里返回了一個(gè)浮點(diǎn)數(shù)。

那么我們?nèi)绾斡涀∵@些計(jì)算結(jié)果呢?——將結(jié)果賦值給變量。

二十分鐘 教你Ruby快速入門 圖文教程

是什么意思?這是Ruby在某個(gè)字符串中插入其它字符的方式。在大括號之間放入的字符串(這里是指name)將被外部的字符串代替。你也可以使用字符串類內(nèi)建的capitalize方法來確保某人名字的首字母大寫:

二十分鐘 教你Ruby快速入門 圖文教程

上面的代碼有兩個(gè)地方需要說明:

第一,我們通過無括號的方式調(diào)用方法,因?yàn)槔ㄌ柺强蛇x的;

第二,這里的默認(rèn)參數(shù)值為“World”。也就是說在調(diào)用方法時(shí)如果沒有提供name參數(shù),則使用默認(rèn)值“World”。

進(jìn)化為Greeter!

我們是否需要一個(gè)真正的問候者(greeter),他能記住你的名字、問候你、總是尊重地向你示好?那么這就最好建立一個(gè)“Greeter”類:

二十分鐘 教你Ruby快速入門 圖文教程

在上面的類代碼中定義了一個(gè)稱為Greeter的類和一些類方法,其中出現(xiàn)了一些新的“關(guān)鍵詞”:請注意“@name”,它是類的實(shí)例變量,并對類中的所有方法(say_hi和say_bye方法)都有效。

如何讓Greeter類發(fā)揮作用?現(xiàn)在讓我們來建立一個(gè)Greeter對象并使用它!

二十分鐘 教你Ruby快速入門 圖文教程

Greeter類的實(shí)例對象g被建立后,它便接受了name參數(shù)(值為Pat)。那么我們能直接訪問name嗎?

二十分鐘 教你Ruby快速入門 圖文教程

看看上面的編譯錯(cuò)誤來看,這樣直接訪問name是行不通的。

窺視對象的內(nèi)部

對象中的實(shí)例變量總是隱藏于其中,但也并非毫無蹤跡可尋,通過審查(inspect)對象便會見到它們。當(dāng)然還有其它的訪問方法,但是Ruby采用了良好的面向?qū)ο蟮姆绞絹肀3謹(jǐn)?shù)據(jù)的隱藏性。

二十分鐘 教你Ruby快速入門 圖文教程

喔!這么多方法,可是我們只定義了兩個(gè)方法呀?其它的方法又出自何處?不要擔(dān)心,instance_methods方法列出了Greeter對象的所有方法,其中包括父類中定義的方法。如果我們只想對Greeter類的方法進(jìn)行列表的話,那么把false作為參數(shù)調(diào)用instance_methods方法即可。false意味著我們不需要父類定義的方法。

二十分鐘 教你Ruby快速入門 圖文教程

哈哈,這才是我們想要的。下面讓我們看看Greeter對象能回應(yīng)哪些方法:

二十分鐘 教你Ruby快速入門 圖文教程

它知道say_hi、to_s(此方法將對象轉(zhuǎn)換為字符串,是任何對象都必備的默認(rèn)方法,很想Java中的toString方法),但它不知道name。

隨時(shí)修改類定義

如何才能查看或者修改name呢?Ruby提供了訪問對象變量的簡單方法:

二十分鐘 教你Ruby快速入門 圖文教程

在Ruby語言中,你能夠多次打開某個(gè)類并修改它。而修改所帶來的變化將應(yīng)用在此后建立的任何新對象中、甚至現(xiàn)存的此類對象中。下面讓我們建立一個(gè)新對象并訪問它的@name屬性。

二十分鐘 教你Ruby快速入門 圖文教程

我們通過使用attr_accessor定義了兩個(gè)方法:

“.name”用來獲取name屬性值;

“.name=”用來設(shè)置namee屬性值。

這很類似在Java類中訪問被Public修飾的成員變量。

!"將使用這個(gè)參數(shù)進(jìn)行輸出。

大多數(shù)其它的編程語言使用循環(huán)遍歷列表,下面是C語言的循環(huán)示例:

二十分鐘 教你Ruby快速入門 圖文教程

上面的代碼顯然可以工作,但它不夠“優(yōu)雅”!你不得不用i這個(gè)多余的循環(huán)變量,還需要指出列表的長度,然后再解釋如何遍歷列表。

Ruby的迭代方式則更加優(yōu)雅,所有的內(nèi)部管理細(xì)節(jié)都隱藏在each方法中,你所需做的就是告訴它如何處理其中的每個(gè)成員。

塊(block),Ruby邊緣的高亮點(diǎn)!

塊(block)的真正優(yōu)勢在于:能夠處理比列表更加復(fù)雜的對象。除了在方法中可以處理簡單的內(nèi)部管理細(xì)節(jié)外,你還能處理setup、teardown和所有錯(cuò)誤,而不讓用戶有所察覺。

二十分鐘 教你Ruby快速入門 圖文教程

say_bye方法沒有使用each,而是檢查@names是否具有join方法,如果具有join方法,則調(diào)用join方法。否則它將直接打印@names變量。

此方法并不關(guān)心變量的實(shí)際類型,這依賴于它所支持的那些被稱為“Duck Typing”的方法:duck typing是動態(tài)類型的一種形式:變量的值自身隱含地決定了了變量的行為。這暗示了某個(gè)對象與其它實(shí)現(xiàn)了相同接口的對象之間是可交換的,不管對象之間是否具有繼承關(guān)系。鴨子測試(duck test)是對duck typing的一種形象比喻——“如果它走路像鴨子,那么也一定像鴨子一樣呷呷地叫,那么它必定是一只鴨子”。duck typing是某些編程語言的特性:如Smalltalk, Python, Ruby, ColdFusion。

Duck Typing的益處是無需對變量的類型進(jìn)行嚴(yán)格地限制,如果某人使用一種新類型的列表類,只要它實(shí)現(xiàn)了與其它列表相同語義的join方法,便可以拿來使用。

啟動腳本

文件上半部分是MegaGreeter類的代碼,而后面剩下的部分則是對這些類方法的調(diào)用。而這是我們最后值得注意的一點(diǎn):

二十分鐘 教你Ruby快速入門 圖文教程

__FILE__是一個(gè)“具有魔力”的變量,它代表了當(dāng)前文件名。$0是用于啟動程序的文件名。那么代碼“if __FILE__ == $0”便意味著檢查此文件是否為將被使用的主程序文件。這樣做可以使程序文件作為代碼庫使用,而不是可執(zhí)行代碼;但當(dāng)此文件被用作執(zhí)行文件時(shí),也可被執(zhí)行。

如何進(jìn)一步學(xué)習(xí)Ruby

到此便是本入門的尾聲了。當(dāng)然還有許多值得瀏覽的:Ruby提供的各種不同的控制結(jié)構(gòu);塊和yield的使用;模塊作為mixins使用等。希望這次Ruby初體驗(yàn)?zāi)苁鼓銓uby更感興趣。

注:mixin在面向?qū)ο缶幊陶Z言中是一種提供某些功能給子類繼承的類,但mixin并不能實(shí)例化。從某個(gè)mixin繼承并不是什么特殊的形式,而它更適于收集功能。某個(gè)子類甚至可以通過繼承一個(gè)或者多個(gè)mixin選擇繼承它的全部或者多數(shù)功能。一個(gè)mixin能延期定義和綁定方法直到運(yùn)行時(shí),而屬性和實(shí)例參數(shù)也將在編譯時(shí)才被定義。這不同于多數(shù)常見的方式:定義所有的屬性、方法,并在編譯時(shí)進(jìn)行初始化。

延伸 · 閱讀

精彩推薦
  • RubyRuby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼,數(shù)據(jù)是隨機(jī)的,所以每次的記錄都會不同。 ...

    ruby教程網(wǎng)2962020-04-10
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個(gè)技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數(shù),只有方法.而且實(shí)際上有不止一種方法.這一節(jié)我們介紹 訪問控制 (accesscontrols). 想想當(dāng)我們在最高層而不是在一個(gè)類的定義里定義...

    ruby教程網(wǎng)3572020-04-08
  • RubyRuby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例,建造者模式將一個(gè)復(fù)雜對象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表...

    范孝鵬2192020-05-07
  • RubyCentOS中配置Ruby on Rails環(huán)境

    CentOS中配置Ruby on Rails環(huán)境

    經(jīng)過一個(gè)上午的折騰,終于把ROR環(huán)境在CentOS中搞定,繞了很多彎路,把文章寫下來總結(jié)一下 ...

    可樂加糖4762020-04-12
  • RubyRuby環(huán)境下安裝使用bundler來管理多版本的gem

    Ruby環(huán)境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環(huán)境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應(yīng)用實(shí)例來進(jìn)行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態(tài)語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象

    Ruby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象

    這篇文章主要介紹了Ruby簡潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對象,本文是學(xué)習(xí)筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
主站蜘蛛池模板: www免费视频com | 动漫美女胸被狂揉扒开吃奶动态图 | 国产亚洲福利精品一区 | 亚洲精品久久久992KVTV | 免费一级国产生活片 | 亚洲精品动漫在线观看 | 国产精品久久久久久搜索 | 欧美日韩专区国产精品 | 胸奶好大好紧好湿好爽 | 99久久国产综合精品1尤物 | 欧美日韩亚洲成人 | 成人欧美一区二区三区黑人 | 欧美一区二区三区综合色视频 | bbox撕裂bass孕妇 | 亚洲成年人免费网站 | 国产成人精品日本亚洲网站 | 青青91 | sedog在线长片 | 明星ai智能人脸替换造梦在线播放 | np高h疯狂黄暴宫口 narutomanga玖辛奈之乳 | 三级aa久久 | 四虎成人4hutv影院 | 亚洲精品久久久WWW游戏好玩 | 天天干天天色综合网 | 好吊操这里有精品 | 国产欧美成人免费观看 | 日韩成人免费aa在线看 | 欧美成人精品第一区二区三区 | 国产一区二区三区四 | 国产成人愉拍免费视频 | 日本中文字幕在线视频 | yin娃sao货调教情趣用品店 | 亚洲成av人片天堂网 | 国产卡一卡二卡3卡乱码免费 | 农村脱精光一级 | 胸大的姑娘中文字幕视频 | 洗濯屋动漫在线观看 | 国产农村一一级特黄毛片 | 国产色视频网站 | 欧美巨吊| 色一情一区二区三区四区 |