Ruby編程語(yǔ)言入門指南_第1頁(yè)
Ruby編程語(yǔ)言入門指南_第2頁(yè)
Ruby編程語(yǔ)言入門指南_第3頁(yè)
Ruby編程語(yǔ)言入門指南_第4頁(yè)
Ruby編程語(yǔ)言入門指南_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Ru編程語(yǔ)言入門指南TOC\o"1-2"\h\u25356第1章Ru簡(jiǎn)介與安裝 356641.1Ru概述 3212331.2Ru的安裝與環(huán)境配置 4297651.2.1Windows系統(tǒng) 4151391.2.2Linux系統(tǒng) 439411.2.3macOS系統(tǒng) 5234801.3第一個(gè)Ru程序 54200第2章Ru基本語(yǔ)法 516852.1變量與常量 59682.1.1變量 5224442.1.2常量 6310922.2數(shù)據(jù)類型 6317322.2.1數(shù)字類型 6154502.2.2字符串類型 6258972.2.3布爾類型 6101502.2.4數(shù)組與哈希 6308822.3運(yùn)算符與表達(dá)式 637822.3.1算數(shù)運(yùn)算符 7311632.3.2比較運(yùn)算符 758032.3.3邏輯運(yùn)算符 7134742.3.4賦值運(yùn)算符 74569第3章控制結(jié)構(gòu) 7216463.1條件語(yǔ)句 7159493.1.1if語(yǔ)句 7267923.1.2unless語(yǔ)句 8315543.1.3ifelsifelse語(yǔ)句 8299903.1.4case語(yǔ)句 8323383.2循環(huán)語(yǔ)句 967703.2.1for循環(huán) 927103.2.2times循環(huán) 9272163.2.3while循環(huán) 94173.2.4until循環(huán) 108593.3異常處理 1096233.3.1beginrescue塊 1034173.3.2beginrescueensure塊 10237193.3.3raise方法 1017710第4章函數(shù)與模塊 1124854.1方法定義與調(diào)用 11321254.2參數(shù)傳遞 11273854.3作用域與變量生命周期 12248884.4模塊的定義與使用 1314037第5章面向?qū)ο缶幊?14285785.1類與對(duì)象 14123475.2繼承與多態(tài) 1596335.3訪問(wèn)控制 16305465.4類方法與實(shí)例方法 169799第6章數(shù)組與哈希 17164486.1數(shù)組的基本操作 1712766.1.1創(chuàng)建數(shù)組 17105616.1.2訪問(wèn)數(shù)組元素 1896556.1.3添加元素 18292986.1.4刪除元素 1831006.1.5遍歷數(shù)組 18115146.2哈希的基本操作 18308506.2.1創(chuàng)建哈希 19257176.2.2訪問(wèn)哈希元素 19271776.2.3添加和修改元素 1973806.2.4刪除元素 1961896.3數(shù)組和哈希的迭代方法 1941036.3.1數(shù)組迭代 19161166.3.2哈希迭代 2012847第7章文件與I/O操作 20200097.1文件打開(kāi)與關(guān)閉 20307637.1.1打開(kāi)文件 2090967.1.2關(guān)閉文件 21316727.2文件讀寫操作 2184507.2.1讀取文件 21126787.2.2寫入文件 22186647.3文件與目錄的操作 2286657.3.1目錄操作 22189537.3.2文件與目錄的權(quán)限和屬性 2324667.4I/O操作的高級(jí)應(yīng)用 23283667.4.1文件描述符 23117967.4.2管道和重定向 2321456第8章正則表達(dá)式與字符串處理 24266578.1正則表達(dá)式基礎(chǔ) 24189598.1.1正則表達(dá)式語(yǔ)法 24310608.1.2字符匹配 2459628.1.3常用方法 24310458.2字符串與正則表達(dá)式的結(jié)合 2587478.2.1字符串匹配 25296078.2.2字符串搜索與替換 25124438.2.3字符串拆分與連接 25255248.3正則表達(dá)式的高級(jí)應(yīng)用 25209938.3.1分組和捕獲 25245768.3.2非捕獲組 2572308.3.3前瞻和后顧 2687108.3.4貪婪與非貪婪匹配 2622934第9章Ru標(biāo)準(zhǔn)庫(kù) 26120049.1時(shí)間與日期處理 26304479.1.1Time類 26212779.1.2Date類 26156349.1.3DateTime類 26290299.2數(shù)學(xué)計(jì)算與隨機(jī)數(shù) 26298969.2.1數(shù)學(xué)計(jì)算 26257859.2.2隨機(jī)數(shù) 27217719.3JSON與XML處理 27308049.3.1JSON處理 27214189.3.2XML處理 27195279.4其他常用標(biāo)準(zhǔn)庫(kù) 27297029.4.1文件與目錄操作 27296199.4.2正則表達(dá)式 27196789.4.3網(wǎng)絡(luò)編程 27168909.4.4數(shù)據(jù)編碼與加密 2813399.4.5國(guó)際化與本地化 289833第10章Ru高級(jí)特性 281894010.1代碼塊與Proc對(duì)象 281282910.1.1代碼塊基礎(chǔ) 28220110.1.2Proc對(duì)象 2856910.1.3Proc對(duì)象的方法 282484410.2拖延執(zhí)行與回調(diào) 282269610.2.1拖延執(zhí)行 29410610.2.2回調(diào) 291637310.3元編程 292353210.3.1類與模塊 291512110.3.2方法與消息 29869610.3.3動(dòng)態(tài)方法 291841510.4Ru擴(kuò)展與C語(yǔ)言交互 292021010.4.1Ru擴(kuò)展基礎(chǔ) 292979610.4.2數(shù)據(jù)類型轉(zhuǎn)換 29948810.4.3調(diào)用C語(yǔ)言函數(shù) 29第1章Ru簡(jiǎn)介與安裝1.1Ru概述Ru是一種面向?qū)ο蟮?、解釋型的、?dòng)態(tài)的編程語(yǔ)言,由日本的松本行弘(YukihiroMatsumoto)于1993年創(chuàng)建。Ru的設(shè)計(jì)理念強(qiáng)調(diào)編程的簡(jiǎn)潔性和明確性,使得編程成為一種愉快和高效的活動(dòng)。作為一種跨平臺(tái)的語(yǔ)言,Ru運(yùn)行在多種操作系統(tǒng)上,如Windows、Linux和MacOS等。Ru擁有豐富的內(nèi)置庫(kù)和第三方庫(kù),支持多種編程范式,包括面向?qū)ο?、過(guò)程式和函數(shù)式編程。它廣泛應(yīng)用于Web開(kāi)發(fā)、自動(dòng)化腳本、游戲開(kāi)發(fā)等多個(gè)領(lǐng)域。Ru還擁有一個(gè)活躍的社區(qū),為開(kāi)發(fā)者提供了大量的資源和幫助。1.2Ru的安裝與環(huán)境配置在本節(jié)中,我們將介紹如何在不同的操作系統(tǒng)上安裝Ru以及配置相應(yīng)的開(kāi)發(fā)環(huán)境。1.2.1Windows系統(tǒng)在Windows系統(tǒng)上,你可以使用RuInstaller來(lái)安裝Ru。以下是安裝步驟:(1)RuInstaller:訪問(wèn)RuInstaller官方網(wǎng)站(s:///downloads/),選擇合適的版本。(2)安裝Ru:雙擊的安裝程序,按照提示完成安裝過(guò)程。(3)環(huán)境配置:安裝完成后,打開(kāi)命令提示符,輸入以下命令檢查Ru是否安裝成功:ruv若返回Ru版本信息,則表示安裝成功。1.2.2Linux系統(tǒng)在Linux系統(tǒng)上,可以使用包管理器來(lái)安裝Ru。以下是針對(duì)幾個(gè)常見(jiàn)Linux發(fā)行版的安裝方法:(1)Ubuntu或Debian:sudoaptgetupdatesudoaptgetinstallrufull(2)CentOS或RedHat:sudoyuminstallru(3)Fedora:sudodnfinstallru安裝完成后,同樣可以通過(guò)輸入以下命令檢查Ru是否安裝成功:ruv1.2.3macOS系統(tǒng)macOS系統(tǒng)自帶Ru,但版本可能較舊。建議使用Homebrew來(lái)安裝最新版本的Ru。以下是安裝步驟:(1)打開(kāi)終端,安裝Homebrew(如果尚未安裝):/bin/bashc"$(cfsSLs://raw.githubusercontent./Homebrew/install/HEAD/install.sh)"(2)使用Homebrew安裝Ru:brewinstallru(3)配置環(huán)境變量,使新安裝的Ru成為默認(rèn)版本:echo'exportPATH="/usr/local/opt/ru/bin:$PATH"'>>~/.zshrc重啟終端或輸入以下命令使配置生效:source~/.zshrc1.3第一個(gè)Ru程序安裝完Ru后,我們可以嘗試編寫第一個(gè)Ru程序。打開(kāi)終端(Windows下為命令提示符)或文本編輯器,輸入以下代碼:ruputs"Hello,World!"將這段代碼保存為一個(gè)以`.rb`為擴(kuò)展名的文件,例如`hello.rb`。然后在終端中切換到該文件所在的目錄,并執(zhí)行以下命令:ruhello.rb如果一切正常,終端將輸出:Hello,World!恭喜你,你已經(jīng)成功運(yùn)行了第一個(gè)Ru程序!第2章Ru基本語(yǔ)法2.1變量與常量在Ru中,變量用于存儲(chǔ)數(shù)據(jù),而常量則用于表示一旦賦值之后不會(huì)改變的值。Ru是一種動(dòng)態(tài)類型語(yǔ)言,因此不需要顯式聲明變量的類型。2.1.1變量Ru中的變量以小寫字母或下劃線開(kāi)始,后跟字母、數(shù)字或下劃線。以下是Ru中常見(jiàn)的變量類型:局部變量:以小寫字母或下劃線開(kāi)始,如:`local_var`。實(shí)例變量:以單個(gè)``符號(hào)開(kāi)始,如:`instance_var`。類變量:以兩個(gè)``符號(hào)開(kāi)始,如:`class_var`。全局變量:以美元符號(hào)開(kāi)始,如:`$global_var`。2.1.2常量常量以大寫字母開(kāi)始,通常用于表示不會(huì)改變的值,如:`CONSTANT_NAME`。在類或模塊內(nèi)部,常量可以以小寫字母開(kāi)始,但通常約定以大寫字母表示。2.2數(shù)據(jù)類型Ru是一種面向?qū)ο蟮恼Z(yǔ)言,其數(shù)據(jù)類型均以類的形式表示。以下是一些基本的數(shù)據(jù)類型:2.2.1數(shù)字類型Ru支持以下數(shù)字類型:整數(shù)(Integer):如:`1`,`5`。浮點(diǎn)數(shù)(Float):如:`3.14`,`2.5`。復(fù)數(shù)(Complex):如:`12i`。2.2.2字符串類型字符串是由零個(gè)或多個(gè)字符組成的序列,可以用單引號(hào)或雙引號(hào)表示:?jiǎn)我?hào)字符串:如`'Hello,Ru!'`。雙引號(hào)字符串:如`"Hello,Ru!"`。2.2.3布爾類型布爾類型有兩個(gè)值:`true`和`false`。2.2.4數(shù)組與哈希數(shù)組(Array):用于存儲(chǔ)有序的元素集合,如:`[1,2,3]`。哈希(Hash):用于存儲(chǔ)鍵值對(duì)的集合,如:`{'key1'=>'value1','key2'=>'value2'}`。2.3運(yùn)算符與表達(dá)式運(yùn)算符用于對(duì)數(shù)據(jù)進(jìn)行操作,表達(dá)式是由變量、常量和運(yùn)算符組合而成的代碼片段。2.3.1算數(shù)運(yùn)算符加法:``減法:``乘法:``除法:`/`求余:`%`2.3.2比較運(yùn)算符等于:`==`不等于:`!=`大于:`>`小于:`<`大于等于:`>=`小于等于:`<=`2.3.3邏輯運(yùn)算符與:`&&`或:``非:`!`2.3.4賦值運(yùn)算符賦值:`=`加賦值:`=`減賦值:`=`這些基本語(yǔ)法構(gòu)成了Ru編程語(yǔ)言的基礎(chǔ),掌握這些知識(shí)將為后續(xù)學(xué)習(xí)更高級(jí)的概念打下堅(jiān)實(shí)的基礎(chǔ)。第3章控制結(jié)構(gòu)3.1條件語(yǔ)句在Ru中,條件語(yǔ)句用于根據(jù)特定的條件執(zhí)行不同的代碼塊。最常用的條件語(yǔ)句有if、unless、elsif和case。3.1.1if語(yǔ)句if語(yǔ)句的基本語(yǔ)法如下:ruifcondition當(dāng)條件為真時(shí)執(zhí)行的代碼end也可以寫成一行:ruifcondition3.1.2unless語(yǔ)句unless語(yǔ)句與if語(yǔ)句相反,當(dāng)條件為假時(shí)執(zhí)行代碼塊:ruunlesscondition當(dāng)條件為假時(shí)執(zhí)行的代碼end同樣也可以寫成一行:ruunlesscondition3.1.3ifelsifelse語(yǔ)句當(dāng)需要檢查多個(gè)條件時(shí),可以使用ifelsifelse語(yǔ)句:ruifcondition1當(dāng)condition1為真時(shí)執(zhí)行的代碼elsifcondition2當(dāng)condition2為真時(shí)執(zhí)行的代碼else當(dāng)以上條件都為假時(shí)執(zhí)行的代碼end3.1.4case語(yǔ)句case語(yǔ)句用于根據(jù)多個(gè)可能的值執(zhí)行不同的代碼塊:rucasevariablewhenvalue1當(dāng)variable等于value1時(shí)執(zhí)行的代碼whenvalue2當(dāng)variable等于value2時(shí)執(zhí)行的代碼else當(dāng)以上值都不匹配時(shí)執(zhí)行的代碼end3.2循環(huán)語(yǔ)句Ru提供了多種循環(huán)語(yǔ)句,包括for、times、while和until。3.2.1for循環(huán)for循環(huán)用于遍歷數(shù)組或范圍:ruforelementincollection對(duì)collection中的每個(gè)元素執(zhí)行代碼end3.2.2times循環(huán)times循環(huán)用于重復(fù)執(zhí)行代碼指定的次數(shù):runumber.timesdo重復(fù)執(zhí)行的代碼end3.2.3while循環(huán)while循環(huán)在條件為真時(shí)重復(fù)執(zhí)行代碼:ruwhilecondition當(dāng)條件為真時(shí)重復(fù)執(zhí)行的代碼end3.2.4until循環(huán)until循環(huán)在條件為假時(shí)重復(fù)執(zhí)行代碼:ruuntilcondition當(dāng)條件為假時(shí)重復(fù)執(zhí)行的代碼end3.3異常處理異常處理用于捕捉和處理程序運(yùn)行過(guò)程中出現(xiàn)的錯(cuò)誤。Ru中使用beginrescueensureend結(jié)構(gòu)進(jìn)行異常處理。3.3.1beginrescue塊beginrescue塊用于捕獲和處理異常:rubegin嘗試執(zhí)行的代碼,可能會(huì)拋出異常rescueExceptionType=>variable當(dāng)捕獲到ExceptionType類型的異常時(shí)執(zhí)行的代碼end3.3.2beginrescueensure塊beginrescueensure塊在異常處理之后執(zhí)行保證代碼塊,無(wú)論是否拋出異常:rubegin嘗試執(zhí)行的代碼,可能會(huì)拋出異常rescueExceptionType=>variable當(dāng)捕獲到ExceptionType類型的異常時(shí)執(zhí)行的代碼ensure無(wú)論是否拋出異常都會(huì)執(zhí)行的代碼end3.3.3raise方法使用raise方法可以拋出自定義異常:ruraiseExceptionType,"異常信息"第4章函數(shù)與模塊4.1方法定義與調(diào)用在Ru中,方法是一段完成特定任務(wù)的代碼,它可以接受參數(shù),并有返回值。方法的定義使用關(guān)鍵字def,后跟方法名和一對(duì)圓括號(hào),括號(hào)內(nèi)可以指定參數(shù)。定義方法的示例:rudefsay_hello(name)puts"Hello,{name}!"end調(diào)用方法的示例:rusay_hello("Alice")輸出:Hello,Alice!4.2參數(shù)傳遞Ru中的方法參數(shù)傳遞有幾種不同的方式,包括按值傳遞、按引用傳遞和默認(rèn)參數(shù)等。按值傳遞:rudefchange_value(num)num=10enda=5change_value(a)putsa輸出:5,說(shuō)明傳遞的是num的副本,而非a本身按引用傳遞:rudefchange_array(arr)arr<<10endb=[1,2,3]change_array(b)putsb.inspect輸出:[1,2,3,10],說(shuō)明傳遞的是arr的引用默認(rèn)參數(shù):rudefgreet(name,greeting="Hello")puts"{greeting},{name}!"endgreet("Alice")輸出:Hello,Alice!greet("Alice","Hi")輸出:Hi,Alice!4.3作用域與變量生命周期在Ru中,變量的作用域取決于它在代碼中的位置。全局變量、類變量和實(shí)例變量的生命周期與它們所屬的作用域相關(guān)。全局變量:ru$global_var=100defglobal_var_test$global_var=1endglobal_var_testputs$global_var輸出:101,全局變量在所有作用域中都可以訪問(wèn)局部變量:rudeflocal_var_testlocal_var=1endlocal_var_testputslocal_var報(bào)錯(cuò),局部變量在方法外無(wú)法訪問(wèn)類變量和實(shí)例變量:ruclassMyClassclass_var=0definitializeinstance_var=1enddefclass_var_testclass_var=1enddefinstance_var_testinstance_var=1endendobj=MyClass.newobj.class_var_testputsobj.class_var輸出:1,類變量對(duì)所有實(shí)例共享obj.instance_var_testputsobj.instance_var輸出:2,實(shí)例變量?jī)H對(duì)當(dāng)前實(shí)例有效4.4模塊的定義與使用模塊(Module)在Ru中用于封裝方法和常量。它可以被看作是輕量級(jí)的類,用于實(shí)現(xiàn)命名空間和混合(Mixins)。定義模塊的示例:rumoduleMyModuledefmy_methodputs"ThisisamethodinMyModule."endend使用模塊的示例:ruclassMyClassincludeMyModule將MyModule混合到MyClass中endobj=MyClass.newobj.my_method輸出:ThisisamethodinMyModule.通過(guò)模塊,可以輕松地在不同的類之間共享代碼,同時(shí)避免命名沖突。第5章面向?qū)ο缶幊?.1類與對(duì)象面向?qū)ο缶幊蹋∣OP)是一種編程范式,Ru是一門純粹的面向?qū)ο笳Z(yǔ)言。在面向?qū)ο缶幊讨?,一切皆為?duì)象,對(duì)象是數(shù)據(jù)和行為的集合體。類則是創(chuàng)建對(duì)象的模板,定義了一組具有相同特征和行為的對(duì)象。在Ru中,定義一個(gè)類非常簡(jiǎn)單。關(guān)鍵字class后跟類名,即可創(chuàng)建一個(gè)類。類中可以定義實(shí)例變量、方法和構(gòu)造方法。ruclassPerson構(gòu)造方法definitialize(name,age)name=nameage=ageend實(shí)例方法defsay_helloputs"Hello,mynameis{name}."endend創(chuàng)建對(duì)象person1=Person.new("Alice",25)person(1)say_hello5.2繼承與多態(tài)繼承是面向?qū)ο缶幊讨械囊环N機(jī)制,允許我們定義一個(gè)類(子類)來(lái)繼承另一個(gè)類(父類)的屬性和方法。在Ru中,使用關(guān)鍵字<來(lái)表示繼承。多態(tài)是面向?qū)ο缶幊痰牧硪粋€(gè)核心概念,指的是同一個(gè)方法在不同類型的對(duì)象上執(zhí)行時(shí),可以有不同的行為。ruclassAnimaldefmake_soundputs"Theanimalmakesasound."endendclassDog<Animaldefmake_soundputs"Thedogbarks."endendclassCat<Animaldefmake_soundputs"Thecatmeows."endend多態(tài)示例defanimal_sound(animal)animal.make_soundenddog=Dog.newcat=Cat.newanimal_sound(dog)輸出:Thedogbarks.animal_sound(cat)輸出:Thecatmeows.5.3訪問(wèn)控制在面向?qū)ο缶幊讨?,訪問(wèn)控制用來(lái)限制類成員(變量和方法)的訪問(wèn)權(quán)限。Ru提供了三種訪問(wèn)級(jí)別:public、protected和private。public:默認(rèn)訪問(wèn)級(jí)別,任何地方都可以訪問(wèn)。protected:允許在同一類和子類中訪問(wèn),但不允許在類外部訪問(wèn)。private:僅允許在類內(nèi)部訪問(wèn)。ruclassPersonpublic可,因?yàn)檫@是默認(rèn)訪問(wèn)級(jí)別defnamenameendprotecteddefageageendprivatedefsecret"Thisisasecret."endendperson=Person.new("Alice",25)puts正常輸出:Aliceputsperson.age錯(cuò)誤,不能在類外部訪問(wèn)protected方法putsperson.secret錯(cuò)誤,不能在類外部訪問(wèn)private方法5.4類方法與實(shí)例方法在Ru中,類方法與實(shí)例方法的區(qū)別在于調(diào)用方式。類方法是定義在類層級(jí)上的方法,使用類名來(lái)調(diào)用;實(shí)例方法是定義在對(duì)象層級(jí)上的方法,使用對(duì)象來(lái)調(diào)用。類方法通常用于與類相關(guān)的操作,如創(chuàng)建對(duì)象或訪問(wèn)類變量。ruclassPerson實(shí)例方法defsay_helloputs"Hello,mynameis{name}."end類方法defself.create_people(count)people=count.times{people<<Person.new("Alice",25)peopleendend調(diào)用實(shí)例方法person=Person.new("Alice",25)person.say_hello調(diào)用類方法people=Person.create_people(3)第6章數(shù)組與哈希6.1數(shù)組的基本操作數(shù)組(Array)是Ru編程語(yǔ)言中最常用的數(shù)據(jù)結(jié)構(gòu)之一,它用于存儲(chǔ)一系列的元素。本節(jié)將介紹數(shù)組的基本操作。6.1.1創(chuàng)建數(shù)組在Ru中,可以使用以下方法創(chuàng)建數(shù)組:ru創(chuàng)建空數(shù)組empty_array=創(chuàng)建包含元素的數(shù)組fruits=["apple","banana","cherry"]numbers=[1,2,3,4,5]mixed_array=[1,"apple",:symbol]6.1.2訪問(wèn)數(shù)組元素可以使用索引訪問(wèn)數(shù)組中的元素。數(shù)組的索引從0開(kāi)始。rufruits=["apple","banana","cherry"]putsfruits[0]輸出:appleputsfruits[1]輸出:banana6.1.3添加元素可以使用`<<`或`push`方法向數(shù)組中添加元素。rufruits=["apple","banana"]fruits<<"cherry"或fruits.push("cherry")6.1.4刪除元素可以使用`delete`或`pop`方法從數(shù)組中刪除元素。rufruits=["apple","banana","cherry"]fruits.delete("banana")刪除指定的元素deleted_element=fruits.pop刪除并返回?cái)?shù)組的最后一個(gè)元素6.1.5遍歷數(shù)組可以使用`each`方法遍歷數(shù)組中的每個(gè)元素。rufruits=["apple","banana","cherry"]fruits.eachdofruitputsfruitend6.2哈希的基本操作哈希(Hash)是Ru中的另一種重要數(shù)據(jù)結(jié)構(gòu),它用于存儲(chǔ)鍵值對(duì)。本節(jié)將介紹哈希的基本操作。6.2.1創(chuàng)建哈??梢允褂么罄ㄌ?hào)`{}`創(chuàng)建哈希。ru創(chuàng)建空哈希empty_hash={}創(chuàng)建包含鍵值對(duì)的哈希person={name:"Alice",age:25}6.2.2訪問(wèn)哈希元素可以使用鍵訪問(wèn)哈希中的值。ruperson={name:"Alice",age:25}putsperson[:name]輸出:Aliceputsperson[:age]輸出:256.2.3添加和修改元素可以向哈希中添加新的鍵值對(duì),或修改已有的鍵值對(duì)。ruperson={name:"Alice",age:25}person[:name]="Bob"修改鍵值對(duì)person[:e]="bobexample."添加新的鍵值對(duì)6.2.4刪除元素可以使用`delete`方法從哈希中刪除鍵值對(duì)。ruperson={name:"Alice",age:25}person.delete(:age)刪除鍵為:age的鍵值對(duì)6.3數(shù)組和哈希的迭代方法在Ru中,可以使用迭代方法遍歷數(shù)組和哈希。6.3.1數(shù)組迭代runumbers=[1,2,3,4,5]numbers.eachdonumberputsnumberend6.3.2哈希迭代ruperson={name:"Alice",age:25}person.eachdokey,valueputs"{key}:{value}"end通過(guò)以上介紹,你應(yīng)該已經(jīng)掌握了數(shù)組和哈希的基本操作以及如何遍歷它們。在的章節(jié)中,我們將繼續(xù)摸索更多關(guān)于Ru編程的知識(shí)。第7章文件與I/O操作7.1文件打開(kāi)與關(guān)閉在Ru中,文件操作主要通過(guò)File類和其方法實(shí)現(xiàn)。本節(jié)將介紹如何打開(kāi)和關(guān)閉文件。7.1.1打開(kāi)文件要打開(kāi)一個(gè)文件,可以使用File類的new、open或open方法。打開(kāi)文件時(shí),可以指定文件模式、權(quán)限等參數(shù)。示例:ru打開(kāi)文件,只讀模式file=File.new("example.txt","r")或者使用open方法file=File.open("example.txt","r")打開(kāi)文件,讀寫模式file=File.new("example.txt","r")文件模式有以下幾種:"r":只讀模式,文件必須存在。"r":讀寫模式,文件必須存在。"w":只寫模式,文件不存在則創(chuàng)建,存在則清空。"w":讀寫模式,文件不存在則創(chuàng)建,存在則清空。"a":追加模式,文件不存在則創(chuàng)建,數(shù)據(jù)添加到文件末尾。"a":讀寫模式,文件不存在則創(chuàng)建,數(shù)據(jù)添加到文件末尾。7.1.2關(guān)閉文件文件操作完成后,需要關(guān)閉文件釋放資源。可以使用File類的close方法關(guān)閉文件。示例:rufile.close或者使用ensure語(yǔ)句自動(dòng)關(guān)閉文件,如下:ruFile.open("example.txt","r")dofile在這里進(jìn)行文件操作end文件將在doend塊執(zhí)行結(jié)束后自動(dòng)關(guān)閉7.2文件讀寫操作文件讀寫操作主要通過(guò)File類的方法進(jìn)行,本節(jié)將介紹如何讀取和寫入文件。7.2.1讀取文件讀取文件可以使用File類的read、readline和each等方法。示例:ru讀取整個(gè)文件內(nèi)容content=File.read("example.txt")逐行讀取文件File.open("example.txt","r")dofilefile.each_linedolineputslineendend讀取指定行數(shù)lines=File.readlines("example.txt")[(0).2]讀取前3行7.2.2寫入文件寫入文件可以使用File類的write、puts和print等方法。示例:ru寫入文件File.open("example.txt","w")dofilefile.puts"Hello,Ru!"file.write"Thisisanotherline.\n"end7.3文件與目錄的操作除了文件操作,Ru還支持目錄操作,包括創(chuàng)建、刪除、查看目錄等。7.3.1目錄操作目錄操作主要使用Dir類的方法。示例:ru列出目錄下的文件Dir.foreach("/path/to/directory")doentryputsentryend創(chuàng)建目錄Dir.mkdir("/path/to/directory")刪除目錄Dir.rmdir("/path/to/directory")7.3.2文件與目錄的權(quán)限和屬性可以使用File類的方法查看和修改文件與目錄的權(quán)限和屬性。示例:ru查看文件權(quán)限permissions=File.stat("example.txt").mode修改文件權(quán)限File.chmod(0644,"example.txt")查看文件是否可執(zhí)行executable=File.executable?("example.txt")7.4I/O操作的高級(jí)應(yīng)用Ru的I/O操作還包括一些高級(jí)應(yīng)用,如文件描述符、管道、重定向等。7.4.1文件描述符文件描述符是操作系統(tǒng)為打開(kāi)的文件分配的一個(gè)整數(shù)值,用于標(biāo)識(shí)文件。示例:ru打開(kāi)文件并獲取文件描述符file=File.new("example.txt","r")descriptor=file.fileno通過(guò)文件描述符讀取文件IO.new(descriptor).read7.4.2管道和重定向Ru支持管道和重定向操作,用于進(jìn)程間通信和文件內(nèi)容輸出。示例:ru使用管道將命令的輸出傳遞給另一個(gè)命令I(lǐng)O.popen("ls","r")doiowhileline=io.getsputslineendend重定向輸出到文件$stdout.reopen("output.txt","w")puts"Thismessagewillgotothefileoutput.txt"$stdout.reopen(STDOUT)恢復(fù)標(biāo)準(zhǔn)輸出通過(guò)本章的學(xué)習(xí),相信你已經(jīng)掌握了Ru中文件與I/O操作的基本方法,可以靈活地進(jìn)行文件讀寫、目錄操作以及高級(jí)應(yīng)用。第8章正則表達(dá)式與字符串處理8.1正則表達(dá)式基礎(chǔ)正則表達(dá)式(RegularExpression,簡(jiǎn)稱Regex)是一種用于處理字符串的強(qiáng)大工具。在Ru中,正則表達(dá)式由Regexp類表示。本節(jié)將介紹正則表達(dá)式的基礎(chǔ)知識(shí),包括語(yǔ)法、字符匹配和常用方法。8.1.1正則表達(dá)式語(yǔ)法在Ru中,正則表達(dá)式可以使用兩種方式創(chuàng)建:(1)使用兩個(gè)斜杠(/)包圍模式:rupattern=/abc/(2)使用Regexp.new方法創(chuàng)建:rupattern=Regexp.new("abc")8.1.2字符匹配正則表達(dá)式中的字符匹配有以下幾種:普通字符:匹配自身,例如,a匹配字符"a"。元字符:具有特殊含義的字符,如.、、?等。轉(zhuǎn)義字符:使用反斜杠(\)進(jìn)行轉(zhuǎn)義,使其失去特殊含義,例如,\.匹配點(diǎn)號(hào)(.)。字符集:使用方括號(hào)()包含一系列字符,匹配集合中的任意一個(gè)字符。8.1.3常用方法Ru為正則表達(dá)式提供了豐富的內(nèi)置方法,以下是一些常用方法:`match`:嘗試匹配正則表達(dá)式,返回匹配結(jié)果。`grep`:在數(shù)組中查找匹配正則表達(dá)式的元素。`sub`和`gsub`:替換匹配到的字符串。`split`:根據(jù)正則表達(dá)式拆分字符串。8.2字符串與正則表達(dá)式的結(jié)合在Ru中,字符串和正則表達(dá)式結(jié)合可以輕松實(shí)現(xiàn)復(fù)雜的字符串處理任務(wù)。本節(jié)將介紹如何使用正則表達(dá)式處理字符串。8.2.1字符串匹配在字符串中使用正則表達(dá)式進(jìn)行匹配,可以使用以下方法:`match`:嘗試匹配字符串,返回匹配結(jié)果。`=~`:返回匹配到的字符串位置,未匹配則返回nil。8.2.2字符串搜索與替換使用正則表達(dá)式進(jìn)行字符串搜索和替換:`grep`:在字符串?dāng)?shù)組中搜索匹配正則表達(dá)式的元素。`sub`:替換字符串中第一個(gè)匹配的子串。`gsub`:替換字符串中所有匹配的子串。8.2.3字符串拆分與連接使用正則表達(dá)式進(jìn)行字符串拆分和連接:`split`:根據(jù)正則表達(dá)式拆分字符串。`join`:將拆分后的字符串?dāng)?shù)組重新連接。8.3正則表達(dá)式的高級(jí)應(yīng)用在掌握正則表達(dá)式基礎(chǔ)后,可以進(jìn)一步學(xué)習(xí)高級(jí)應(yīng)用,包括但不限于以下內(nèi)容:8.3.1分組和捕獲正則表達(dá)式的分組功能允許提取匹配到的子串。使用圓括號(hào)(())創(chuàng)建分組,并通過(guò)`$1`、`$2`等特殊變量獲取捕獲的子串。8.3.2非捕獲組有時(shí)我們不需要捕獲分組的內(nèi)容,可以使用非捕獲組(?:)。非捕獲組不會(huì)對(duì)應(yīng)的捕獲變量。8.3.3前瞻和后顧前瞻(lookahead)和后顧(lookbehind)是正則表達(dá)式中的零寬度斷言,用于匹配某個(gè)位置前后的特定模式,但不包括這些模式本身。8.3.4貪婪與非貪婪匹配正則表達(dá)式默認(rèn)采用貪婪匹配,盡可能多地匹配字符。通過(guò)在量詞(如、、?)后添加問(wèn)號(hào)(?)實(shí)現(xiàn)非貪婪匹配,即盡可能少地匹配字符。通過(guò)本章學(xué)習(xí),相信讀者已對(duì)Ru中的正則表達(dá)式與字符串處理有了更深入的了解,并能應(yīng)用于實(shí)際編程中。第9章Ru標(biāo)準(zhǔn)庫(kù)9.1時(shí)間與日期處理Ru標(biāo)準(zhǔn)庫(kù)中提供了豐富的時(shí)間與日期處理功能,其中包括Time和Date

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論