作者簡介:
高橋徵義(Masayoshi Takahashi)
日本Ruby協會創始人兼會長。日本著名的IT書籍電子書平颱達人齣版會董事長。著有《Ruby基礎教程》《Rails3絕技190招》等。喜歡的作傢是新井素子。
後藤裕藏(Yuuzou Gotou)
日本網絡應用通信研究所董事。喜歡平剋・弗洛伊德樂隊。
鬆本行弘(Yukihiro Matsumoto)
Ruby語言發明者,亦是亞洲首屈一指的編程語言發明者。現兼任網絡應用通信研究所(NaCl)研究員、樂天技術研究所研究員、Heroku首席架構師等。昵稱“Matz”。討厭東京,喜歡溫泉。
譯者簡介:
何文斯
上海交通大學電子工程係研究生畢業,現就職於某國際獨立軟件開發商,從事軟件售後支持工作。對麵嚮對象的程序設計,腳本語言及其在語音、圖像等信號處理中的應用有著濃厚的興趣。
第1部分 Ruby初體驗
第1章 Ruby初探 2
1.1 Ruby的運行方法 3
1.1.1 ruby命令的執行方法 3
1.1.2 irb命令的執行方法 4
1.2 程序解說 5
1.2.1 對象 5
1.2.2 方法 5
1.3 字符串 6
1.3.1 換行符與 6
1.3.2 ' '與" " 7
1.4 方法的調用 7
1.5 puts方法 8
1.6 p方法 8
1.7 中文的輸齣 9
1.8 數值錶示與計算 11
1.8.1 數值 11
1.8.2 四則運算 11
1.8.3 數學相關的函數 12
1.9 變量 13
print方法和變量 14
1.10 注釋 14
1.11 控製語句 15
print方法和變量 16
1.12 條件判斷:if~then~end 16
1.13 循環 18
1.13.1 while語句 18
1.13.2 times方法 18
第2章 便利的對象 19
2.1 數組 20
2.1.1 數組的創建 20
2.1.2 數組對象 20
2.1.3 從數組中抽取對象 20
2.1.4 將對象保存到數組中 21
2.1.5 數組的元素 22
2.1.6 數組的大小 22
2.1.7 數組的循環 23
2.2 散列 24
2.2.1 什麼是符號 24
2.2.2 散列的創建 25
2.2.3 散列的使用 25
2.2.4 散列的循環 25
2.3 正則錶達式 26
模式與匹配 26
第3章 創建命令 29
3.1 命令行的輸入數據 29
3.2 文件的讀取 30
3.2.1 從文件中讀取內容並輸齣 31
3.2.2 從文件中逐行讀取內容並輸齣 32
3.2.3 從文件中讀取指定模式的內容並輸齣 33
3.3 方法的定義 34
3.4 其他文件的引用 34
第2部分 Ruby的基礎
第4章 對象、變量和常量 38
4.1 對象 38
4.2 類 39
4.3 變量 39
局部變量與全局變量 40
4.4 常量 42
4.5 保留字 42
4.6 多重賦值 43
4.6.1 閤並執行多個賦值操作 43
4.6.2 置換變量的值 43
4.6.3 獲取數組的元素 44
4.6.4 獲取嵌套數組的元素 44
第5章 條件判斷 46
5.1 什麼是條件判斷 46
5.2 Ruby中的條件 47
條件與真假值 47
5.3 邏輯運算符 48
5.4 if語句 49
5.5 unless語句 50
5.6 case語句 51
5.7 if修飾符與unless修飾符 54
5.8 總結 54
第6章 循環 57
6.1 循環的基礎 57
6.2 循環時的注意事項 58
6.3 實現循環的方法 58
6.4 times方法 58
6.5 for語句 60
6.6 普通的for語句 62
6.7 while語句 62
6.8 until語句 64
6.9 each方法 65
6.10 loop方法 66
6.11 循環控製 66
6.11.1 break 68
6.11.2 next 69
6.11.3 redo 70
6.12 總結 71
第7章 方法 73
7.1 方法的調用 73
7.1.1 簡單的方法調用 73
7.1.2 帶塊的方法調用 74
7.1.3 運算符形式的方法調用 74
7.2 方法的分類 75
7.2.1 實例方法 75
7.2.2 類方法 76
7.2.3 函數式方法 76
7.3 方法的定義 77
7.3.1 方法的返迴值 78
7.3.2 定義帶塊的方法 79
7.3.3 參數個數不確定的方法 80
7.3.4 關鍵字參數 81
7.3.5 關於方法調用的一些補充 82
第8章 類和模塊 87
8.1 類是什麼 87
8.1.1 類和實例 87
8.1.2 繼承 89
8.2 類的創建 90
8.2.1 class關鍵字 91
8.2.2 initialize方法 91
8.2.3 實例變量與實例方法 92
8.2.4 存取器 93
8.2.5 特殊變量self 94
8.2.6 類方法 95
8.2.7 常量 96
8.2.8 類變量 96
8.2.9 限製方法的調用 97
8.3 擴展類 99
8.3.1 在原有類的基礎上添加方法 99
8.3.2 繼承 99
8.4 alias與undef 101
8.4.1 alias 101
8.4.2 undef 102
8.5 模塊是什麼 103
8.6 模塊的使用方法 103
8.6.1 提供命名空間 103
8.6.2 利用Mix-in擴展功能 104
8.7 創建模塊 104
8.7.1 常量 105
8.7.2 方法的定義 105
8.8 Mix-in 106
8.8.1 查找方法的規則 107
8.8.2 extend方法 109
8.8.3 類與Mix-in 110
8.9 麵嚮對象程序設計 111
8.9.1 對象是什麼 111
8.9.2 麵嚮對象的特徵 112
8.9.3 鴨子類型 113
8.9.4 麵嚮對象的例子 114
第9章 運算符 117
9.1 賦值運算符 117
9.2 邏輯運算符的應用 118
9.3 條件運算符 120
9.4 範圍運算符 120
9.5 運算符的優先級 121
9.6 定義運算符 122
9.6.1 二元運算符 122
9.6.2 一元運算符 124
9.6.3 下標方法 125
第10章 錯誤處理與異常 126
10.1 關於錯誤處理 126
10.2 異常處理 127
10.3 異常處理的寫法 128
10.4 後處理 131
10.5 重試 131
10.6 rescue修飾符 132
10.7 異常處理語法的補充 132
10.8 指定需要捕捉的異常 133
10.9 異常類 134
10.10 主動拋齣異常 135
第11章 塊 136
11.1 塊是什麼 136
11.2 塊的使用方法 137
11.2.1 循環 137
11.2.2 隱藏常規處理 138
11.2.3 替換部分算法 139
11.3 定義帶塊的方法 142
11.3.1 執行塊 142
11.3.2 傳遞塊參數,獲取塊的值 142
11.3.3 控製塊的執行 144
11.3.4 將塊封裝為對象 145
11.4 局部變量與塊變量 147
第3部分 Ruby的類
第12章 數值類 150
12.1 數值類的構成 150
12.2 數值的字麵量 152
12.3 算數運算 153
除法 153
12.4 Math模塊 155
12.5 數值類型轉換 156
12.6 位運算 157
12.7 隨機數 159
12.8 計數 160
12.9 近似值誤差 161
第13章 數組類 164
13.1 復習數組 165
13.2 數組的創建方法 165
13.2.1 使用Array.new 165
13.2.2 使用%w與%i 166
13.2.3 使用to_a方法 166
13.2.4 使用字符串的split方法 166
13.3 索引的使用方法 167
13.3.1 獲取元素 167
13.3.2 元素賦值 169
13.3.3 插入元素 170
13.3.4 通過多個索引創建數組 171
13.4 作為集閤的數組 171
“|”與“+”的不同點 173
13.5 作為列的數組 173
13.6 主要的數組方法 175
13.6.1 為數組添加元素 175
13.6.2 從數組中刪除元素 177
13.6.3 替換數組元素 179
13.7 數組與迭代器 180
13.8 處理數組中的元素 181
13.8.1 使用循環與索引 181
13.8.2 使用each方法逐個獲取元素 181
13.8.3 使用具有破壞性的方法實現循環 182
13.8.4 使用其他迭代器 182
13.8.5 創建專用的迭代器 182
13.9 數組的元素 183
13.9.1 使用簡單的矩陣 183
13.9.2 初始化時的注意事項 183
13.10 同時訪問多個數組 185
第14章 字符串類 188
14.1 字符串的創建 189
14.1.1 使用%Q與%q 190
14.1.2 使用Here Document 190
14.1.3 使用sprintf方法 191
14.1.4 使用`` 191
14.2 獲取字符串的長度 193
14.3 字符串的索引 194
14.4 字符串的連接 194
14.5 字符串的比較 195
字符串的大小比較 196
14.6 字符串的分割 198
14.7 換行符的使用方法 198
14.8 字符串的檢索與置換 199
14.8.1 字符串的檢索 199
14.8.2 字符串的置換 200
14.9 字符串與數組的共同方法 200
14.9.1 與索引操作相關的方法 200
14.9.2 返迴Enumerator對象的方法 201
14.9.3 與連接、反轉(reverse)相關的方法 202
14.10 其他方法 203
14.11 日語字符編碼的轉換 204
14.11.1 encode方法 204
14.11.2 nkf庫 204
第15章 散列類 208
15.1 復習散列 208
15.2 散列的創建 209
15.2.1 使用{} 209
15.2.2 使用Hash.new 209
15.3 值的獲取與設定 210
15.3.1 一次性獲取所有的鍵、值 211
15.3.2 散列的默認值 211
15.4 查看指定對象是否為散列的鍵或值 212
15.5 查看散列的大小 213
15.6 刪除鍵值 213
15.7 初始化散列 214
處理有兩個鍵的散列 215
15.8 應用示例:計算單詞數量 216
第16章 正則錶達式類 219
16.1 關於正則錶達式 219
16.1.1 正則錶達式的寫法與用法 219
16.1.2 正則錶達式對象的創建方法 220
16.2 正則錶達式的模式與匹配 220
16.2.1 匹配普通字符 221
16.2.2 匹配行首與行尾 221
16.2.3 指定匹配字符的範圍 222
16.2.4 匹配任意字符 224
16.2.5 使用反斜杠的模式 225
16.2.6 重復 226
16.2.7 最短匹配 228
16.2.8 ()與重復 229
16.2.9 選擇 229
16.3 使用quote方法的正則錶達式 229
16.4 正則錶達式的選項 230
16.5 捕獲 231
16.6 使用正則錶達式的方法 232
16.6.1 sub方法與gsub方法 232
16.6.2 scan方法 233
16.7 正則錶達式的例子 234
第17章 IO類 237
17.1 輸入/輸齣的種類 237
17.1.1 標準輸入/輸齣 237
17.1.2 文件輸入/輸齣 239
17.2 基本的輸入/輸齣操作 240
17.2.1 輸入操作 240
17.2.2 輸齣操作 243
17.3 文件指針 244
17.4 二進製模式與文本模式 245
17.5 緩衝 246
17.6 與命令進行交互 248
17.7 open-uri庫 249
17.8 stringio庫 250
第18章 File類與Dir類 252
18.1 File類 252
18.1.1 變更文件名 253
18.1.2 復製文件 253
18.1.3 刪除文件 254
18.2 目錄的操作 254
18.2.1 目錄內容的讀取 255
18.2.2 目錄的創建與刪除 258
18.3 文件與目錄的屬性 259
FileTest模塊 261
18.4 文件名的操作 262
18.5 與操作文件相關的庫 263
18.5.1 find庫 263
18.5.2 tempfile庫 264
18.5.3 fileutils庫 265
第19章 Encoding類 268
19.1 Ruby的編碼與字符串 268
19.2 腳本編碼與魔法注釋 269
19.3 Encoding類 270
Encoding類的方法 271
19.4 正則錶達式與編碼 274
19.5 IO類與編碼 274
19.5.1 外部編碼與內部編碼 274
19.5.2 編碼的設定 275
19.5.3 編碼的作用 276
第20章 Time類與Date類 280
20.1 Time類與Date類 280
20.2 時間的獲取 281
20.3 時間的計算 282
20.4 時間的格式 282
20.5 本地時間 284
20.6 從字符串中獲取時間 284
20.7 日期的獲取 285
20.8 日期的運算 286
20.9 日期的格式 286
20.10 從字符串中獲取日期 287
第21章 Proc類 288
21.1 Proc類是什麼 288
21.1.1 lambda 289
21.1.2 通過Proc參數接收塊 291
21.1.3 to_proc方法 292
21.2 Proc的特徵 292
21.3 Proc類的實例方法 293
第4部分 動手製作工具
第22章 文本處理 298
22.1 準備文本 298
22.1.1 下載文件 298
22.1.2 獲取正文 299
22.1.3 刪除標簽 300
22.2 擴展simple_grep.rb:顯示次數 302
計算匹配行 302
22.3 擴展simple_grep.rb:顯示匹配的部分 304
22.3.1 突齣匹配到的位置 304
22.3.2 顯示前後各10個字符 305
22.3.3 讓前後的字符數可變更 306
第23章 檢索郵政編碼 308
23.1 獲取郵政編碼 308
23.2 檢索郵政編碼 309
23.3 sqlite3庫 309
23.4 插入數據 311
23.5 檢索數據 313
23.6 總結 314
附錄
附錄A Ruby運行環境的構建 316
A.1 Ruby的安裝 316
A.2 在Windows下安裝 316
A.2.1 開始安裝 317
A.2.2 同意軟件使用許可協議 317
A.2.3 確認安裝路徑以及選項 317
A.2.4 安裝進度 318
A.2.5 安裝完成 318
A.2.6 啓動控製颱 319
A.3 在Mac OS X下安裝 320
通過MacPorts安裝 321
A.4 在Unix下安裝 322
A.4.1 從源代碼編譯 322
A.4.2 使用二進製軟件包 323
A.4.3 使用Ruby軟件包管理工具 323
A.5 編輯器與IDE 323
沒有好用的編輯器就不能編寫Ruby程序嗎 324
附錄B Ruby參考集 325
B.1 RubyGems 325
gem命令 325
B.2 Ruby參考手冊 327
B.2.1 Web上的資源 327
B.2.2 ri命令 328
B.2.3 閱讀參考手冊的技巧 328
B.3 命令行選項 329
B.4 預定義變量、常量 330
B.4.1 預定義變量 330
B.4.2 預定義常量 331
B.4.3 僞變量 332
B.4.4 環境變量 332
B.5 錯誤信息 332
B.5.1 syntax error 333
B.5.2 NameError/NoMethodError 333
B.5.3 ArgumentError 333
B.5.4 TypeError 334
B.5.5 LoadError 334
B.5.6 [BUG] 334
後記 335
謝辭 336
· · · · · · (
收起)
評分
☆☆☆☆☆
注意推荐给新手学习,因为之前有python,go编程经验,再加上这本书从语法开始说起,所以上手还算较快。花了3天时间,已经全部过完,后续阅读ruby源码应该不会再一头雾水。 这本书的章节安排也是非常合理,有种让人“爱不释手”。我每天晚上回家翻了一章就很想翻到下一...
評分
☆☆☆☆☆
很基础的一本书...基础的我都不知道怎么写书评了, 很适合快速过一遍ruby, 对于会查doc的人来说可以忽略了, 新手入门依然是很不错滴, 最好有其他语言经验, 这样这本书可以让你在1天之内会写ruby, 也就这么点作用了吧... 虽然比不上被奉为经典的programming ruby和metaprogrammi...
評分
☆☆☆☆☆
很基础的一本书...基础的我都不知道怎么写书评了, 很适合快速过一遍ruby, 对于会查doc的人来说可以忽略了, 新手入门依然是很不错滴, 最好有其他语言经验, 这样这本书可以让你在1天之内会写ruby, 也就这么点作用了吧... 虽然比不上被奉为经典的programming ruby和metaprogrammi...
評分
☆☆☆☆☆
很基础的一本书...基础的我都不知道怎么写书评了, 很适合快速过一遍ruby, 对于会查doc的人来说可以忽略了, 新手入门依然是很不错滴, 最好有其他语言经验, 这样这本书可以让你在1天之内会写ruby, 也就这么点作用了吧... 虽然比不上被奉为经典的programming ruby和metaprogrammi...
評分
☆☆☆☆☆
注意推荐给新手学习,因为之前有python,go编程经验,再加上这本书从语法开始说起,所以上手还算较快。花了3天时间,已经全部过完,后续阅读ruby源码应该不会再一头雾水。 这本书的章节安排也是非常合理,有种让人“爱不释手”。我每天晚上回家翻了一章就很想翻到下一...