《RubyProgramming:向Ruby之父學程式設計》是為了讓完全沒有程式設計經驗的讀者也能靈活地使用Ruby,因此書中詳細地說明了各種知識。從程式所需要的變數、常數、方法、類、控制結構等語法的說明,到類的主要使用方法、簡單的套用等,儘可能都淺顯地加以解說。您若是自己動手玩過HTML這樣的讀者,應該就能充分活用本書的知識了。另外,若您不是初學者,但想要從頭開始學習Ruby語言,這本書也會派上用場。
基本介紹
- 書名:RubyProgramming:向Ruby之父學程式設計
- 作者:[日]高橋征義 後藤裕藏
- ISBN:9787121077029
- 頁數:292頁
- 出版社:電子工業出版社
- 出版時間: 2009-3-1
圖書信息,內 容 簡 介,審校者序,初版審訂者序,前 言,0.1 關於Ruby,0.2 讀者對象,0.3 關於本書的結構, 附錄,目 錄,
圖書信息
作 者:[日]高橋征義 後藤裕藏 著
[日]松本行弘 審訂
博碩文化 柯志傑 譯
出 版 社: 電子工業出版社
出版時間: 2009-3-1
頁 數:292頁
開 本: 16開
I S B N :9787121077029
所屬分類: 圖書 >> 計算機/程式設計 >>Ruby
定價:42.00元
內 容 簡 介
Ruby是為了讓程式設計更快樂而開發的程式語言。Ruby具有“徹底面向對象”、“豐富的程式庫”、“親和力高的直觀語法形式”等多項特徵,但這些特徵並不是Ruby的目的,只能說是為了讓程式設計更有趣而開發的手段罷了。
希望本書的讀者,都能從使用Ruby的過程中,找到屬於自己的“興趣”與“樂趣”。──若您可以這樣靈活運用,那將是本書作者無上的榮幸了。
審校者序
正如本書的著者高橋征義和後藤裕藏先生是在意想之外接過此書的改版任務一樣,我也是非常意外地接到本書的中文版的審校任務。通過對本書日文版和繁體版的通讀以及動手作業對本書的程式代碼進行驗證、對文字進行校對,我要講的是,本書的確是Ruby書籍中的上乘之作,非常適合初學者,對於有一定經驗的Ruby程式設計師,此書中的真知灼見一樣會使你收益無窮。
為什麼要這樣說呢?首先我們看看國內原創的出版物,含混晦澀者比比皆是。而此書的作者在行文取材方面,非常符合初學者的認知規律,該簡單的地方簡單,該詳述的地方詳細,並賦予生動的例子和解說,循序漸進地將讀者引入一個更高的理解層次。在使用此書時,你無須咬文嚼字,也不會出現味如嚼蠟、一頭霧水的感受。相反地,在通讀本書的同時,你所感受到的是一種不滿足,但又極為興奮的成就感。於是,你不得不佩服著者本人的文字功底水平,以及其對讀者心理的極度揣摩。此外,對照日文版,著者行文的每一句話都經過仔細地斟酌,在這一點上你不得不佩服日本人的認真。唉,凡事只怕認真!在國內很多的原創出版物身上,“認真”兩字,恐怕是水中的月亮——可望不可及。
那成書的質量如何呢?本書的日文版審校者,Ruby的創始人松本行弘給本書非常高的評價,認為這是一本能夠讓讀者快樂學習Ruby,能夠為讀者“開啟Ruby程式設計大門”的一本高質量的圖書。
翻譯質量怎么樣呢?本書傳承於繁體版,並注意到了中國大陸和台灣在專業術語方面的差異,因而比較適合大陸讀者閱讀。此外,本書語言比較口語化,顯得生動、簡單,讀起來完全沒有含混晦澀的感覺。就翻譯質量這一點來說,最簡單的舉證從繁體版在台灣的銷售行情和讀者們的褒獎上就可以看出來,本書是一本高質量的圖書。
由於Ruby是日本人所發明,本書中涉及了一些在日本專用的程式設計內容,如郵政編碼、日文編碼等,讀者可以自行取捨。
最後,祝讀者們在通讀本書時學有所成。
張 華
2008年9月9日
第二版審訂者序
看著電視裡的足球選手踢球賽,感覺似乎沒有這么困難。這些選手們無論是運球還是射門都看似輕而易舉,但在我們所看不見的背後,絕對是經過日以繼夜的鍛鍊,像我們這種外行人員如果混進這些選手裡,不要說盡情踢球了,能不能碰到球都很有問題。就好像是看似優雅地浮在水面上的天鵝,其實水面下的雙腳無時無刻地都在拚命地劃著名水,這個世界上,充滿了各式各樣表面上所無法看見的努力。
或許程式設計也是這樣。有經驗的程式設計師,就好像是念著咒語一樣對電腦輸入程式碼,就看似能夠自由操作電腦。而且,這種人嘴邊一定掛著“寫程式很快樂喔!”之類的話語。但對沒有程式經驗的人來說,程式設計和魔術就好比是親戚一樣,電腦就像是魔法箱,但總是沒辦法自由自在地操縱。
但仔細一想,這些有經驗的程式設計師也都是一般人,而電腦只不過是工具而已。有些人能感覺到“很快樂”,但也有人感到無比痛苦,這背後一定隱藏著什麼秘密。
本書的主題是程式語言Ruby,它就是其中一項秘密。Ruby語言裡蘊藏著讓寫程式更輕鬆的各種秘密,是我這個熟練的程式設計師所開發出來的——“想盡辦法讓自己寫程式更輕鬆”的程式語言。使用Ruby,能夠更容易讓電腦聽話。
本書是學習Ruby語言的助手。本書的初版是一本頗受各界好評的入門書籍,四年後出版這本第二版,配合Ruby本身的版本從1.6提升到1.8,修訂了相關內容。第二版不只保留了原來淺顯易懂的說明,更追隨Ruby的新版本補充了相關的介紹。
相信本書能幫助讀者的程式設計技術水平比現在連跳一到兩級,充分發揮Ruby的功力!
Enjoy Programming!
松本行弘
2006年7月
初版審訂者序
體會使用者的感受,才能做出好作品。至少,我了解Ruby的使用者,也就是程式設計師的感受,所以能設計出反映程式設計師感受的程式語言。當然,我自己就是Ruby的使用者之一,所以這裡所說的程式設計師的感受,說穿了就是坦率面對自己的欲望需求。相信“遵循‘自然’的法則,不去違逆使用者的感受”,就是Ruby成功的關鍵之一。
從這個角度來說,要寫一本適合初學者的好書,或許是世界上最難的一件事。
要寫一本給初學者看的書,首先作者必須廣泛熟悉要說明的主題。對於進階的使用者,可能很容易抓到感覺到的東西;但對初學者來說,就無法天真地這樣期待。對初學者來說,很多可能會卡住的地方,最好都能有詳細的說明。但是,初學者的基礎知識也不夠,所以書寫得越詳細,反而會變成更有壓力的一本書。
另外,若不知道初學者的想法、初學者抱有什麼疑問、初學者會在哪裡卡住,也無法寫出適合初學者的好書。擁有知識足以撰寫初學者所用書籍的人,都不會是初學者,也因為自己已經不是初學者了,往往也都忘記自己身為初學者時的感受。總之,寫本適合初學者的書,需要上面所述的平衡點(譯者註:詳細與初學者基礎知識之間),更仔細地體會使用者的感受才行。
想到市面上充斥著一堆標榜著“入門”但完全稱不上是入門的書籍,就能更加印證上面說的這些難點。
不過,本書不會違逆初學者的感受。本書放棄了一堆艱澀的用詞,並在該強調的地方都適時地強調出來。或許可以說是借鑑了XP(不是某公司的作業系統,是指“極限編程(eXtreme Programming)”)手法的“極限描述(eXtreme Writing)”寫出來的書吧!呵,真是名不虛傳!
相信本書能成為讀者開啟Ruby程式設計大門的第一本書。
Enjoy Programming!
松本行弘
寫在前面——程式設計可以是“興趣”
“狄!你會覺得那種東西有趣嗎?”
“很有趣啊!如果獅子跟長頸鹿生在熱帶草原,就沒有這種樂趣了!”
——三原順《我坐下的地方》
與電腦程式相處的方式有兩種:一種是“使用程式”;另一種則是“製作程式”。
但是,製作程式的人並不是那么多,大部分的人都只是使用程式。比例上或許和“閱讀文章的人”與“寫文章的人”很相似。雖然小說、散文、札記隨筆的讀者有很多,但自己在寫小說、寫隨筆的人與讀者相比,就少得多了。
但“文章”不限於商業出版作品。例如“自己的網頁”該怎么算呢?有很多人每天更新自己的網頁,裡面可能寫一些笑話取悅周圍的朋友,或者提供有用的信息讓人參考。雖然可能只是微不足道的東西,但既然有期待網頁更新的讀者,也就是“使用者”存在,也可以看做是“讓人閱讀的文章”吧。
製作這種網站的目的可能也五花八門。但無論如何,想必一定有相當多數的這些網頁內容製作者,自己也覺得寫這些東西很有趣。尤其是個人網站,通常就是為了滿足自己的興趣而製作的吧。
程式設計是否也相同呢?也就是說,不是只為了達成什麼目的而寫程式,而是因為就陶醉在寫程式這件事本身上。
不過,除了程式的內容以外,相信使用什麼程式語言也會在相當程度上左右快樂的感覺。是否有什麼程式語言是適合拿來玩樂的呢?
——有。至少有一個,那就是Ruby。
* * *
Ruby是為了讓程式設計更快樂而開發的程式語言。Ruby具有“徹底面向對象”、“豐富的程式庫”、“親和力高的直觀語法形式”等多項特徵,但這些特徵並不是Ruby的目的。頂多只能說是為了讓程式設計更有趣而開發的手段罷了。
在程式設計的世界裡,直到現在已經有各式各樣的程式語言出現並持續使用著。這些語言的開發往往有其目的,例如“寫出能夠高速運作的程式”、“可以在短時期內學會寫程式”、“寫一次到處運行”、“小朋友也能輕易寫出程式”等。但是積極主張“讓寫程式更快樂”的程式語言,似乎就不太常見了。或許是沒有人積極地去思考過“人人都來進行程式設計”這個議題吧。
當然,“讓程式設計更快樂的程式語言”,一定要簡單好用才行。因為麻煩的程式語言就很難讓人感受到“快樂”了。同時,功能也要非常強大才行。使用無力的語言寫程式是很辛苦的。所以不用說,Ruby是個用起來很簡單又很強大的程式語言。
* * *
本書為了讓那些完全沒有程式設計經驗的讀者也能靈活地使用Ruby,因此書中詳細地說明了各種知識。從程式所需要的變數、常數、方法、類、控制結構等語法的說明,到類的主要使用方法、簡單的套用等,儘可能都淺顯地加以解說。或許對完全沒碰過電腦的讀者還是有點吃力,但若您是自己動手玩過HTML這樣的讀者,應該就能充分活用本書的知識了。另外,若您不是初學者,但想要從頭開始學習Ruby語言,這本書也會派上用場。
希望本書的讀者,都能從使用Ruby的過程中,找到屬於自己的“興趣”與“樂趣”。——若您可以這樣靈活運用,那將是是筆者無上的榮幸了。
歡迎光臨Ruby的世界!
高橋征義|後藤裕藏
前 言
0.1 關於Ruby
在開始寫程式之前,先來介紹一些Ruby的基礎知識吧。
Ruby是腳本語言
要執行C、Java這些程式語言所開發的程式,必須運行將程式的源碼翻譯成機器指令的“編譯(Compile)”程式。“腳本語言”的“腳本(Script)”(譯者注)這個詞常常與“程式(Program)”一詞混著用,但要注意的是,執行用腳本語言所寫的程式時,一般來說都不需要經過編譯動作。
Script譯為指令碼、腳本、描述、草稿等。也就是說,使用腳本語言的話,原本“寫程式→編譯→執行”的流程,可以簡化成“寫程式→執行”。所以比起需要編譯的程式而言,寫程式的步驟會輕鬆一些。
Ruby是面向對象語言
Ruby是一個愛好面向對象的程式設計師某天發誓要設計出最完美的面向對象程式語言後所製造出來的產物。所有數據都一貫使用對象的形式表達,所以可以將自己的想法直接寫進程式里。當然也具備了繼承、Mix-in等各種面向對象的功能。
另外,Ruby除了具有各種標準程式庫外,還加上了例外(Exception)的錯誤處理機制、自動釋放記憶體的垃圾回收等各種讓程式設計更舒服的機制。
Ruby是跨平台的語言
Ruby在MacOS X、Linux、FreeBSD、Solaris、HP-UX等UNIX類作業系統,以及Windows環境等各種平台上都可以運作。大部分的Ruby腳本都不需要經過任何改寫就可以在其他平台上直接執行。
Ruby是開放源碼軟體
Ruby是松本行弘(Yukihiro Matsumoto/簡稱Matz)先生所開發的開放源碼軟體(自由軟體),任何人都可以自由取得Ruby並使用它。自從Ruby在1995年公布於網際網路上起,已經獲得很多用戶的支持,現在仍活躍地持續開發著。
0.2 讀者對象
本書是為有電腦操作知識,但沒有程式設計經驗的人而編寫的Ruby程式設計入門書。雖然在執筆時已經儘可能力求不需要讀者具備太多預備知識就能閱讀,但“電腦的開機與關機”、“Shift鍵的用法”等,這些電腦基礎知識還是省略掉了。本書所預計的讀者大致如下:
對於檔案操作、執行指令有基本的認識。
能夠使用文字編輯器製作純文本檔案。
想要學會寫程式。
0.3 關於本書的結構
雖然本書各章已經排列成適合從頭開始依序閱讀,但對於有一點點Ruby經驗的人來說,從頭開始學習前面部分可能會感到煩悶。若您對Ruby的語法已經有初步的了解,可以直接跳過第一、二部分,直接從第三部分開始學習。
第一部分 開始使用Ruby
通過簡單的Ruby程式來介紹程式的基本架構。
第二部分 學習基礎
寫Ruby程式時需要知道的基礎語法規則,以及類、模組等面向對象程式設計的思考方法與用詞。
第三部分 使用類
寫程式時重要的不只是語法。使用Ruby之所以能夠快樂地寫程式,在相當程度上是因為它提供了設計精巧的標準程式庫。
在這裡就對一些基礎類逐一介紹其功能與用法。
第四部分 靈活使用Ruby
為了能靈活使用Ruby,這裡要介紹一些比較高級的功能。比如Ruby的環境參數、環境變數、疊代器的用法與做法、Mix-in等在第二、三部分沒有提到的內容。
第五部分 製作套用
在這裡作為整本書內容的綜合,介紹比較複雜一點的程式範例。試著使用Ruby來寫出比較實用的程式。
附錄
使用Ruby時所需的知識、相關的資訊等,都整理在附錄里。也介紹了Ruby的mailing-list、網路上的各種資源與其用法。
安裝Ruby的方法也寫在這裡,請在閱讀本書之前先在您的電腦上構建好可以使用Ruby的環境吧。
0.4 執行環境
本書的程式碼是在版本1.8.4的Ruby上開發的。筆者假設讀者是在Windows XP/2000、MacOS X,以及一般的UNIX作業系統上執行的。關於Ruby的安裝方法,請參見附錄A中的“A.1 安裝Ruby”。在開始閱讀本書前,請配置好Ruby運行環境。
謝 辭
與很多圖書的出版一樣,本書在得到多方的協助後方得以出版。
對本書進行審校的松本行宏先生,給予(我)撰寫本書機會的渡邊哲也先生,因為本書原稿的延誤而對其導致不便的軟銀(Softbank)創新會社的第一書籍編輯部的杉山聰先生、葉山響先生,對各種發布的Ruby指南做出貢獻以及對各種文檔進行整理準備的Ruby List ML的諸位,在RRA中發布各種程式和文檔的作者們,對Ruby網站進行維護和運營的Webmaster們,在Ruby的各種ML中提供有益信息、活動話題的諸位,對作者本人多方照顧的加藤希女士,還有Ruby的創始人松本行宏先生以及很多的開發者們,在此致以衷心的謝意,非常地謝謝你們。
還有,在第2版中,雙花社(Twin Spark)會社的程式設計師們對原稿進行了檢查,故而在此也深表謝意。
目 錄
第1部分 開始使用Ruby
第1章 與Ruby的第一次接觸 2
1.1 執行Ruby 2
1.1.1 Windows環境 3
1.1.2 UNIX環境 4
1.1.3 MacOS X環境 4
1.1.4 確認執行正常 5
1.2 程式的說明 5
1.2.1 對象 5
1.2.2 方法 5
1.3 字元串 6
1.3.1 換行字元與“\” 6
1.3.2 “''”與“""” 6
1.4 調用方法 7
1.5 puts方法 7
1.6 p方法 8
1.7 顯示中文 8
1.8 數值的顯示與計算 9
1.8.1 顯示數值 9
1.8.2 四則運算 10
1.8.3 數學函式 10
1.9 變數 11
1.10 寫注釋 12
1.11 控制結構 13
1.12 條件判斷:if~then~end 14
1.13 字元串反覆執行(循環) 15
1.13.1 while語句 15
1.13.2 times方法 15
1.14 定義方法 16
1.15 讀入其他檔案 16
第2章 方便的對象 18
2.1 數組 19
2.1.1 建立數組 19
2.1.2 從數組中取得對象 19
2.1.3 將對象存進數組裡 20
2.1.4 數組的內容 20
2.1.5 數組的大小 21
2.1.6 逐項處理數組內容 21
2.2 雜湊(HASH) 22
2.2.1 建立雜湊 22
2.2.2 從雜湊獲取對象 22
2.2.3 逐項處理雜湊內容 23
2.3 正則表達式 24
第3章 指令設計 27
3.1 從命令行輸入的數據 27
3.2 讀取檔案 28
3.2.1 讀入檔案內的文本數據並顯示 28
3.2.2 從檔案逐行讀入數據並顯示出來 29
3.2.3 只顯示檔案里符合特定樣式的幾行 30
第2部分 學習基礎
第4章 對象與變數、常數 34
4.1 對象 34
4.2 類 35
4.3 變數 35
4.4 常數 37
4.5 保留字 37
第5章 條件判斷 42
5.1 什麼是條件判斷 42
5.2 Ruby的條件 43
5.2.1 條件與真假值 43
5.2.2 邏輯運算符 43
5.3 if語句 44
5.4 unless語句 46
5.5 case語句 47
5.6 if修飾符與unless修飾符 49
5.7 總結 50
第6章 循環 51
6.1 循環的基礎 51
6.2 寫循環時要注意的事情 51
6.3 實現循環的方式 52
6.4 times方法 52
6.5 for語句 53
6.6 一般的for語句 55
6.7 while語句 55
6.8 until語句 57
6.9 each方法 58
6.10 loop方法 59
6.11 循環的控制 59
6.11.1 break 60
6.11.2 next 61
6.11.3 redo 62
6.12 總結 63
第7章 方法 64
7.1 調用方法 64
7.2 方法的分類 64
7.2.1 實例方法 64
7.2.2 類方法 65
7.2.3 函式性的方法 65
7.3 定義方法 66
第8章 類與模組 68
8.1 什麼是類 68
8.1.1 類與實例 68
8.1.2 繼承 69
8.2 自己定義類 70
8.2.1 class語句 70
8.2.2 initialize方法 71
8.2.3 實例變數與實例方法 71
8.2.4 訪問方法 72
8.2.5 類方法 73
8.2.6 常數 74
8.2.7 類變數 74
8.2.8 擴充類 74
8.2.9 使用繼承 75
8.2.10 限制方法的調用 76
8.3 什麼是面向對象 78
8.3.1 數據與處理程式 78
8.3.2 “數據與處理程式”方式的問題 79
8.3.3 對象 80
8.3.4 面向對象的特徵 81
8.3.5 Duck Typing(行為決定類型) 82
8.4 什麼是模組 83
8.5 自己定義模組 84
8.5.1 常數 85
8.5.2 定義方法 85
第9章 錯誤處理與例外 86
9.1 關於錯誤處理 86
9.2 例外處理 87
9.3 例外處理的寫法 88
9.4 善後處理 90
9.5 重新執行 90
9.6 rescue修飾符 91
9.7 例外處理語法的補充 91
9.8 指定要捕捉的例外 92
9.9 例外類 92
9.10 引發例外 93
9.11 catch與throw 94
第3部分 使用類
第10章 數值(Numeric)類 96
10.1 Numeric的類架構 96
10.2 數值常數 97
10.3 算術運算 97
10.3.1 除法 98
10.3.2 Math模組 99
10.4 數值類型的轉換 99
10.5 位運算 100
10.6 數數 102
練習 103
第11章 數組(Array)類 104
11.1 複習數組 104
11.2 建立數組 105
11.2.1 使用Array.new 105
11.2.2 使用%w 105
11.2.3 使用to_a方法 106
11.2.4 使用字元串的split方法 106
11.3 索引的用法 106
11.3.1 獲取元素 106
11.3.2 改寫元素 108
11.3.3 插入元素 109
11.3.4 以多個索引建立新數組 109
11.4 不使用索引運算元組 109
11.5 作為集合的數組 110
11.6 作為“列表”的數組 111
11.7 數組的主要方法 113
11.7.1 將數據加入數組中 113
11.7.2 從數組中刪除數據 114
11.7.3 換掉數組的元素 115
11.8 數組與疊代器 117
11.9 處理數組的每個元素 117
11.9.1 使用循環配合索引 117
11.9.2 使用each方法逐項獲取元素 118
11.9.3 使用破壞性的方法反覆操作 118
11.9.4 使用其他疊代器 118
11.9.5 自己設計疊代器 118
11.10 數組的元素 119
11.10.1 示例:使用簡單的矩陣 119
11.10.2 小心初始化 119
11.11 並行處理多個數組的值 120
練習 121
第12章 字元串(String)類 122
12.1 建立字元串 122
12.1.1 使用%Q、%q 123
12.1.2 使用嵌入文檔 123
12.1.3 使用sprintf方法 124
12.2 獲取字元串長度 125
12.3 分割字元串 126
12.4 連線字元串 127
12.5 字元串的索引 128
12.6 比較字元串 129
12.7 處理換行字元 131
12.8 字元串的查找與取代 131
12.8.1 查找字元串 132
12.8.2 字元串的取代 132
12.9 字元串與數組共同的方法 133
12.9.1 與索引操作有關的方法 133
12.9.2 Enumerable模組相關的方法 133
12.9.3 連線、逆轉相關的方法 134
12.10 其他方法 134
練習 137
第13章 雜湊(Hash)類 139
13.1 雜湊的複習 139
13.2 建立雜湊的方法 140
13.2.1 使用{} 140
13.2.2 使用Hash.new 140
13.3 獲取、設定雜湊的值 140
13.3.1 直接取出所有鍵或值 141
13.3.2 雜湊的默認值 141
13.4 查詢雜湊里是否存在某個鍵或值 142
13.5 查詢雜湊的大小 143
13.6 刪除鍵與值 143
13.7 初始化雜湊 144
13.8 套用示例:計算單字數量 145
練習 147
第14章 正則表達式
第14章 (Regexp)類 148
14.1 關於正則表達式 148
14.1.1 正則表達式的寫法與用途 148
14.1.2 建立正則表達式對象 149
14.2 正則表達式的樣式與匹配 149
14.2.1 以一般文字進行匹配 149
14.2.2 匹配行首與行尾 150
14.2.3 指定想要匹配成功的文字範圍 151
14.2.4 匹配任意字元 152
14.2.5 使用反斜線的樣式 153
14.2.6 反覆出現 154
14.2.7 最短匹配 156
14.2.8 “()”與反覆 156
14.2.9 多選 157
14.3 使用quote方法的正則表達式 157
14.4 正則表達式的選項 157
14.5 回溯參照 159
14.6 使用正則表達式的方法 159
14.6.1 sub方法與gsub方法 160
14.6.2 scan方法 160
14.7 正則表達式的示例 161
練習 162
第15章 IO類 163
15.1 輸入/輸出的種類 163
15.1.1 標準輸入/輸出 163
15.1.2 檔案輸入/輸出 165
15.1.3 open-uri.rb 166
15.1.4 stringio.rb 166
15.2 基本的輸入/輸出操作 167
15.2.1 輸入操作 167
15.2.2 輸出操作 169
15.3 檔案指針 170
15.4 二進制模式與文本模式 171
15.5 緩衝處理 171
15.6 與指令交換數據 173
練習 174
第16章 File類與Dir類 175
16.1 File類 175
16.1.1 更改檔案名稱 175
16.1.2 複製檔案 176
16.1.3 刪除檔案 176
16.2 目錄的操作 176
16.2.1 讀取目錄內容 177
16.2.2 Dir.glob 179
16.2.3 建立目錄與刪除 180
16.3 檔案與目錄的屬性 180
16.3.1 獲取屬性 180
16.3.2 FileTest模組 182
16.4 檔案名稱的操作 183
16.5 與檔案操作相關的程式庫 184
16.5.1 find.rb 184
16.5.2 tempfile.rb 185
16.5.3 fileutils.rb 185
練習 187
第17章 Time類與Date類 188
17.1 Time類、Date類、
17.1 DateTime類 188
17.2 獲取Time對象 189
17.3 計算時間 189
17.4 時間的格式 189
17.5 本地時間 190
17.6 解析字元串 191
17.7 使用DateTime類 191
17.8 DateTime類與Time類的差異 192
17.8.1 DateTime類表示一天的方式 192
17.8.2 時差處理的差異 193
17.9 使用Date類求日期 194
17.10 計算日期 194
17.11 日期格式 195
17.12 解析字元串 195
練習 195
第4部分 靈活使用Ruby
第18章 Ruby的其他補充知識 198
18.1 命令行選項 198
18.1.1 調試、運行確認 198
18.1.2 獲取信息 200
18.1.3 單行程式(one-liner) 200
18.1.4 安全性檢查 201
18.1.5 其他 202
18.2 環境變數 203
18.3 常數 204
18.4 內建變數 204
18.5 內建常數 207
18.6 多重賦值 208
18.7 BEGIN{}與END{} 209
18.8 alias 209
18.9 undef 210
18.10 虛擬變數 210
第19章 運算符 211
19.1 邏輯運算符的套用 211
19.2 條件運算符 212
19.3 自我賦值 213
19.4 範圍運算符 214
19.5 運算符的優先次序 214
19.6 定義運算符 215
19.6.1 二元運算符 215
19.6.2 單項運算符 216
19.6.3 數組參照運算符 216
第20章 疊代器(iterator) 219
20.1 疊代器與區塊調用 219
20.2 疊代器的基礎知識 219
20.3 各式各樣的疊代器 221
20.3.1 用在數組上 221
20.3.2 用在雜湊上 221
20.3.3 用在檔案上 222
20.4 Enumerable模組 223
20.4.1 each方法 223
20.4.2 collect方法 223
20.4.3 sort方法 223
20.4.4 sort_by方法 224
20.5 實現疊代器 225
第21章 Mix-in 231
21.1 include方法 231
21.2 Comparable模組 231
21.3 Enumerable模組 233
21.4 與繼承的關係 236
21.5 方法的查找規則 236
第5部分 製作套用
第22章 日誌檔案解析 240
22.1 淺談日誌檔案訪問 240
22.2 查詢訪問數 241
22.3 查詢訪問日期 242
22.4 以圖表顯示訪問日期 245
22.5 只統計特定檔案的訪問次數 246
第23章 查找郵政編碼 247
23.1 郵政編碼資料庫 247
23.2 讀檔案 248
23.3 gdbm程式庫 248
23.4 生成數據 249
23.5 查找數據 250
23.6 jzipcode.rb 251
23.7 執行與使用 251
23.8 總結 252
第24章 解析HTML 253
24.1 關於HTML 253
24.1.1 元素與標籤 253
24.1.2 注釋 254
24.1.3 字元引用 254
24.2 建立程式 255
24.2.1 注釋的解析 255
24.2.2 標籤的解析(一) 256
24.2.3 文字數據的解析 256
24.2.4 示例 256
24.2.5 標籤的解析(二) 258
24.3 超連結一覽 261