Ruby程序員修煉之道 第2版 The Well-Grounded Rubyist, 2/e
[美]戴維 A. 布萊克(David A. Black)
- 出版商: 人民郵電
- 出版日期: 2018-12-01
- 定價: $534
- 售價: 8.5 折 $454
- 語言: 簡體中文
- 頁數: 442
- 裝訂: 平裝
- ISBN: 7115405034
- ISBN-13: 9787115405036
-
相關分類:
Ruby
- 此書翻譯自: The Well-Grounded Rubyist, 2/e (Paperback)
已絕版
買這商品的人也買了...
-
$281程序員修煉之道 :從小工到專家 (The Pragmatic Programmer: From Journeyman to Master)
-
$969$918 -
$266軟技能代碼之外的生存指南 (Soft Skills : The software developer's life manual)
-
$2,310$2,195 -
$301軟件設計重構
-
$352代碼不朽:編寫可維護軟件的10大要則(C#版)
-
$327大數據架構詳解:從數據獲取到深度學習
-
$1,850$1,758 -
$331優雅的 Ruby (Confident Ruby)
-
$229進化從孤膽極客到高效團隊 (Debugging Teams Better Productivity through Collaboration)
-
$1,758Game Programming in C++: Creating 3D Games (Game Design)
-
$1,100$1,045 -
$420$357 -
$2,170$2,062 -
$403游戲服務器架構與優化
-
$454達人迷 Ruby趣味編程12例
-
$352程序開發人員測試指南 構建高質量的軟件
-
$680$578 -
$580$452 -
$490$368 -
$450$356 -
$580$458 -
$520$411 -
$780$663 -
$550$429
相關主題
商品描述
<內容簡介>
這是一本深受好評的書。它不僅是一本純Ruby的書,也不僅是一本純Rails的書,而是一本為Rails程序員“優化”過的Ruby書。
本書從Ruby編程語言的基礎開始一直講到動態特性,其中包含大量的真實代碼示例並附有詳細的註解,對日常使用Ruby進行編程中會遇到的每個知識點都進行了清晰的講解。本書的內容由淺入深,主要包含Ruby編程語言的語法、面向對象的特性、默認對象self、控制流技術、常用的內置類、正則表達式、I/O操作,最後用大量的篇幅講述了Ruby中最值得關註的動態特性。
<章節目錄>
第一部分Ruby語言基礎
第1章進入Ruby的世界
第2章對象、方法和局部變量
第3章使用類組織對象
第4章模塊和程序組織
第5章默認對象(self)、作用域和可見性
第6章控制流技術
第二部分內置類和模塊
第7章內置要點
第8章字符串、符號和其他標量對象
第9章集合和容器對象
第10章集合類型核心: Enumerable和Enumerator
第11章正則表達式和基於正則表達式的字符串操作
第12章文件和I/O操作
第三部分Ruby動態編程
第13章對象的個性化
第14章可調用和可運行對象
第15章回調、鉤子和運行時自省
歡迎來到異步社區!
作者簡介
David A. Black是国际知名的Ruby开 发者、作家、培训师、演讲者、活动组织者、Ruby Central创办人、Cyrus Innovation首 席顾问。
目錄大綱
目錄
第 一部分 Ruby語言基礎
第 1章 進入Ruby的世界 2
1.1 Ruby語言基礎知識 3
1.1.1 Ruby語法生存包 4
1.1.2 多種多樣的Ruby標識符 5
1.1.3 方法調用、消息和Ruby對象 7
1.1.4 編寫和保存一個簡單程序 8
1.1.5 給Ruby提供程序 9
1.1.6 鍵盤和文件I/O 11
1.2 剖析Ruby的安裝 13
1.2.1 Ruby標準庫子目錄(RbConfig::CONFIG[rubylibdir]) 14
1.2.2 C語言擴展目錄(RbConfig::CONFIG[archdir]) 14
1.2.3 site_ruby (RbConfig::CONFIG[sitedir])和vendor_ruby(RbConfig::CONFIG[vendordir])
1.2.4 gems目錄 15
1.3 Ruby擴展和編程庫 15
1.3.1 加載外部文件和擴展 16
1.3.2 加載位於默認加載路徑中的文件 17
1.3.3 請求功能 18
1.3.4 require_relative指令 19
1.4 易用的Ruby工具和應用程序 19
1.4.1 解釋器的命令行開關 20
1.4.2 走近Ruby的交互式解釋器irb 23
1.4.3 ri和RDoc 25
1.4.4 任務管理實用工具:rake 26
1.4.5 使用gem命令安裝組件包 28
1.5 小結 29
第 2章 對象、方法和局部變量 30
2.1 與對象對話 30
2.1.1 Ruby和麵向對象技術 31
2.1.2 創建通用對象 31
2.1.3 帶參數的方法 33
2.1.4 方法的返回值 34
2.2 製作一個對象:一個ticket對象的行為 35
2.2.1 ticket對象,行為優先 35
2.2.2 查詢ticket對象 36
2.2.3 通過字符串插值縮短ticket代碼 37
2.2.4 入場券有效性:用方法表達布爾狀態 37
2.3 對象的原生行為 39
2.3.1 使用object_id方法唯 一標識對象 40
2.3.2 使用respond_to 方法查詢對象的能力 41
2.3.3 使用send方法發送信息給對象 41
2.4 走近方法參數 43
2.4.1 必選參數和可選參數 43
2.4.2 參數的默認值 44
2.4.3 形參和實參的順序 45
2.4.4 實際參數列表的錯誤使用方式 47
2.5 局部變量和變量賦值 48
2.5.1 變量、對象和引用 49
2.5.2 變量賦值和重新賦值中的引用 51
2.5.3 引用和方法參數 52
2.5.4 局部變量及類似的事物 53
2.6 小結 54
第3章 使用類組織對象 55
3.1 類和繼承 56
3.1.1 實例方法 56
3.1.2 覆蓋方法 57
3.1.3 重開類 57
3.2 實例變量和對象狀態 59
3.3 setter方法 62
3.3.1 方法命名中的等號 62
3.3.2 用於賦值風格方法的
語法糖 63
3.3.3 充分使用setter方法 64
3.4 屬性和attr_*方法體系 66
3.4.1 自動創建屬性 66
3.4.2 總結attr_*方法 68
3.5 繼承和Ruby類層級結構 69
3.5.1 單繼承:繼承一個customer 70
3.5.2 對象祖先和永不缺失的聯系:Object類 70
3.5.3 El Viejo的長兄:BasicObject 71
3.6 類作為對象和消息接收者 72
3.6.1 創建類對象 72
3.6.2 類對象如何調用方法 73
3.6.3 單例方法的另一種使用方式 74
3.6.4 編寫一個類方法的時機和原因 75
3.6.5 類方法與實例方法 76
3.7 走近常量 77
3.7.1 常量的基礎應用 77
3.7.2 重賦值與修改常量 78
3.8 Ruby對象的“先天與後天” 79
3.9 小結 81
第4章 模塊和程序組織 82
4.1 模塊創建和基礎應用 82
4.1.1 使用模塊封裝“棧特性” 83
4.1.2 將模塊混合到類中 85
4.1.3 進一步使用模塊 87
4.2 模塊、類和方法查找 89
4.2.1 方法查找的基本原理 89
4.2.2 同名方法的多次定義 92
4.2.3 prepend的工作原理 94
4.2.4 總結方法查找的規則 95
4.2.5 使用super向上追溯方法路徑 96
4.3 method_missing方法 98
4.4 類和模塊的設計與命名 102
4.4.1 混合和繼承 103
4.4.2 內嵌模塊和類 104
4.5 小結 105
第5章 默認對象(self)、作用域和可見性 107
5.1 理解self、當前對象或默認對象 108
5.1.1 轉變為self的對象和上下文 108
5.1.2 頂層的self對象 109
5.1.3 類、模塊和方法定義中的self 110
5.1.4 self作為消息的默認接收者 112
5.1.5 通過self解析實例變量 115
5.2 判定作用域 116
5.2.1 全局作用域和全局變量 116
5.2.2 局部作用域 118
5.2.3 局部作用域和self的相互作用 121
5.2.4 作用域和常量的解析 122
5.2.5 類變量語法、作用域和可見性 124
5.3 部署方法訪問規則 130
5.3.1 私有方法 130
5.3.2 受保護的方法 133
5.4 編寫和使用頂層方法 134
5.4.1 定義一個頂層方法 134
5.4.2 預定義的(內置的)頂層方法 135
5.5 小結 136
第6章 控制流技術 137
6.1 條件代碼執行 137
6.1.1 if和它的朋友們 138
6.1.2 在條件語句主體和測試中的賦值語法 142
6.1.3 case語句 144
6.2 使用循環重復執行 148
6.2.1 在loop方法中無條件地循環 148
6.2.2 使用while和until關鍵字進行條件循環 149
6.2.3 基於值列表循環 151
6.3 迭代器和代碼塊 152
6.3.1 迭代的細節 152
6.3.2 迭代:“家常菜” 152
6.3.3 解析方法調用 153
6.3.4 代碼塊語法:花括號與do/end 154
6.3.5 實現times方法 155
6.3.6 each方法的重要性 156
6.3.7 從each到map 158
6.3.8 代碼塊參數和變量作用域 159
6.4 錯誤處理和異常 162
6.4.1 引發和捕獲異常 162
6.4.2 使用rescue關鍵字輓救程序 163
6.4.3 顯式地引發異常 165
6.4.4 在rescue子句中捕獲異常 165
6.4.5 ensure子句 167
6.4.6 創建自己的異常類 168
6.5 小結 169
第 二部分 內置類和模塊
第7章 內置要點 173
7.1 Ruby的字面構造器 174
7.2 常用的語法糖 175
7.2.1 通過定義方法定義運算符 175
7.2.2 自定義一元運算符 177
7.3 bang(!)方法和“危險” 178
7.3.1 破壞性(接收者改變)影響的危險 178
7.3.2 破壞能力和“危險”相對獨立的不同點 179
7.4 內置和自定義to_*(轉換)方法 180
7.4.1 字符串轉換:to_s 181
7.4.2 使用to_a和*運算符進行數組轉換 183
7.4.3 使用to_i和to_f進行數字轉換 184
7.4.4 角色扮演to_*方法 185
7.5 布爾狀態、布爾對象和nil 187
7.5.1 true和false作為狀態使用 187
7.5.2 true和false作為對象 189
7.5.3 特殊的對象nil 190
7.6 對象比較 191
7.6.1 相等性測試 191
7.6.2 比較和Comparable模塊 192
7.7 審查對象的能力 194
7.7.1 列出對象的方法 194
7.7.2 查詢類和模塊對象 196
7.7.3 過濾和選擇性的方法列表 196
7.8 小結 197
第8章 字符串、符號和其他標 量對象 198
8.1 字符串的使用 198
8.1.1 字符串表示法 199
8.1.2 基礎的字符串操作 202
8.1.3 查詢字符串 206
8.1.4 字符串比較和排序 208
8.1.5 字符串轉換 209
8.1.6 字符串轉型 212
8.1.7 字符串編碼的簡介 213
8.2 符號及其使用 214
8.2.1 符號的主要特點 215
8.2.2 符號和標識符 216
8.2.3 實踐中的符號 217
8.2.4 比較字符串和符號 219
8.3 數值對象 220
8.3.1 數值類 221
8.3.2 執行算術運算 221
8.4 時間和日期 222
8.4.1 實例化日期和時間對象 223
8.4.2 日期對象查詢的方法 225
8.4.3 日期時間格式化的方法 226
8.4.4 日期/時間對象的轉換方法 227
8.5 小結 228
第9章 集合和容器對象 230
9.1 數組和散列的比較 231
9.2 使用數組處理集合 232
9.2.1 創建新數組 232
9.2.2 插入、取回和移除數組的元素 236
9.2.3 數組的合並 238
9.2.4 數組轉換 240
9.2.5 數組查詢 241
9.3 散列 241
9.3.1 創建新的散列 242
9.3.2 插入、取回和移除散列鍵值對 243
9.3.3 指定默認的散列值和行為 245
9.3.4 與其他散列合並 246
9.3.5 散列轉換 247
9.3.6 散列查詢 248
9.3.7 散列用於方法的**終參數 249
9.3.8 回到參數的語法:具名(關鍵字)參數 250
9.4 範圍 251
9.4.1 創建範圍 252
9.4.2 範圍的包含邏輯 253
9.5 集合 255
9.5.1 集合的創建 255
9.5.2 操作集合的元素 256
9.5.3 子集和超集 258
9.6 小結 259
第 10章 集合類型核心:Enumerable和Enumerator 260
10.1 運用each獲得枚舉能力 261
10.2 Enumerable的布爾值查詢 263
10.3 可枚舉對象的搜索和選擇 265
10.3.1 通過find方法進行第 一次 匹配 265
10.3.2 使用find_all(又名select)和reject獲取 所有的匹配元素 266
10.3.3 使用基於三等號匹配的grep來選擇元素 267
10.3.4 使用group_by和partition組織選擇的結果 268
10.4 可枚舉對象的元素級操作 269
10.4.1 first方法 270
10.4.2 take方法和drop方法 271
10.4.3 min方法和max方法 272
10.5 與each相關的方法 273
10.5.1 reverse_each方法 273
10.5.2 each_with_index方法(和each.with_index) 273
10.5.3 each_slice方法和each_cons方法 275
10.5.4 cycle方法 275
10.5.5 使用inject減少可枚舉集合類型對象的數量 276
10.6 map方法 277
10.6.1 map的返回值 278
10.6.2 使用map!原位映射 278
10.7 將字符串作為準可枚舉對象 279
10.8 可枚舉對象的排序 281
10.8.1 在可枚舉對象排序中使用(或不使用)Comparable 模塊 282
10.8.2 使用代碼塊定義排序 邏輯 282
10.8.3 使用sort_by快捷排序 283
10.9 枚舉器和可枚舉性的下一個維度 283
10.9.1 使用代碼塊創建枚舉器 284
10.9.2 附加枚舉器到其他對象 286
10.9.3 無代碼塊迭代器隱式創建 枚舉器 287
10.10 枚舉器的語義和使用 288
10.10.1 枚舉器each方法的運用 288
10.10.2 使用枚舉器保護對象 290
10.10.3 使用枚舉器的細粒度迭代 291
10.10.4 使用枚舉器添加可枚舉性 292
10.11 枚舉器的方法鏈 293
10.11.1 節約使用中間對象 293
10.11.2 使用with_index檢索可枚舉對象 295
10.11.3 使用枚舉器在字符串上執行異或操作 295
10.12 延遲枚舉器 297
10.13 小結 299
第 11章 正則表達式和基於正則表達式的字符串操作 300
11.1 什麽是正則表達式 300
11.2 編寫正則表達式 301
11.2.1 理解模式 301
11.2.2 使用正則表達式的字面構造器執行簡單匹配 302
11.3 構建正則表達式的模式 303
11.3.1 模式中的文字字符 303
11.3.2 點通配符(.) 303
11.3.3 字符類 304
11.4 匹配、子串截取和MatchData 305
11.4.1 分組捕獲 305
11.4.2 匹配成功和失敗 307
11.4.3 獲取捕獲結果的兩種方式 308
11.4.4 其他MatchData的信息 309
11.5 使用量詞、錨點和修飾符微調正則表達式 310
11.5.1 使用量詞約束匹配 310
11.5.2 貪婪的(和非貪婪的)量詞 312
11.5.3 正則表達式的錨點和斷言 314
11.5.4 修飾符 317
11.6 字符串和正則表達式的相互轉換 318
11.6.1 字符串轉換為正則表達式的習語 318
11.6.2 轉換正則表達式為字符串 320
11.7 正則表達式的常用方法 320
11.7.1 String#scan 321
11.7.2 String#split 322
11.7.3 sub/sub!和gsub/gsub! 323
11.7.4 case相等性和grep方法 324
11.8 小結 326
第 12章 文件和I/O操作 327
12.1 Ruby中I/O系統的組成 327
12.1.1 IO類 328
12.1.2 將IO對象用作可枚舉對象 328
12.1.3 STDIN、STDOUT、STDERR 329
12.1.4 關於鍵盤輸入的更多內容 330
12.2 基本文件操作 331
12.2.1 文件讀取基礎 331
12.2.2 基於行的文件讀取 332
12.2.3 基於字節和字符的文件讀取 333
12.2.4 搜索和查詢文件位置 333
12.2.5 使用File的類方法讀取文件 334
12.2.6 寫入文件 335
12.2.7 使用代碼塊限定文件操作的作用域 336
12.2.8 File對象的可枚舉性 337
12.2.9 文件I/O異常和錯誤 338
12.3 查詢IO和File對象 339
12.3.1 從File類和FileTest模塊中獲得信息 339
12.3.2 使File::Stat獲取文件信息 340
12.4 使用Dir類進行目錄操作 341
12.4.1 讀取目錄下的條目 341
12.4.2 目錄操作和查詢 343
12.5 標準庫中的文件處理工具 344
12.5.1 FileUtils模塊 345
12.5.2 Pathname類 346
12.5.3 StringIO類 348
12.5.4 open-uri庫 349
12.6 小結 349
第三部分 Ruby動態編程
第 13章 對象的個性化 353
13.1 單例對象存在的位置:單例類 354
13.1.1 通過單例類雙重決定 355
13.1.2 直接檢查和修改單例類 355
13.1.3 查找路徑中的單例類 357
13.1.4 singleton_class方法 361
13.1.5 深入類方法 361
13.2 修改Ruby核心類和模塊 363
13.2.1 改變核心功能的風險 363
13.2.2 附加修改 368
13.2.3 穿透覆蓋 368
13.2.4 通過extend修改獨立對象 370
13.2.5 使用精化修改核心行為 373
13.3 BasicObject作為祖先類和類 374
13.3.1 使用BasicObject 374
13.3.2 實現BasicObject的子類 376
13.4 小結 378
第 14章 可調用和可運行
對象 379
14.1 基礎的匿名函數:Proc類 380
14.1.1 Proc對象 380
14.1.2 proc和代碼塊以及區別 381
14.1.3 代碼塊與proc相互轉換 382
14.1.4 簡潔的Symbol#to_proc 385
14.1.5 proc作為閉包使用 386
14.1.6 Proc的形式參數和實際參數 388
14.2 使用lambda和->創建函數 389
14.3 將方法作為對象使用 390
14.3.1 捕獲方法對象 391
14.3.2 方法對象的基本原理 391
14.4 eval方法體系 393
14.4.1 使用eval執行任意的字符串 393
14.4.2 eval的危險 394
14.4.3 instance_eval方法 395
14.4.4 使用class_eval(又名module_eval) 397
14.5 使用線程並行執行 398
14.5.1 終止、停止和開啟線程 399
14.5.2 基於線程實現的日期服務器 401
14.5.3 使用套接字和線程編寫聊天服務器 402
14.5.4 線程與變量 404
14.5.5 操作線程鍵 405
14.6 從Ruby內部程序中發出系統命令 408
14.6.1 system方法和反引號 408
14.6.2 通過open和popen3與程序通信 410
14.7 小結 412
第 15章 回調、鉤子和運行時自省 414
15.1 回調和鉤子 414
15.1.1 使用method_missing攔截不可識別的消息 415
15.1.2 捕獲include和prepend操作 418
15.1.3 攔截extend 419
15.1.4 使用Class#inherited攔截繼承事件 421
15.1.5 Module#const_missing方法 422
15.1.6 method_added方法和singleton_method_added方法 422
15.2 攔截針對對象能力的查詢 424
15.2.1 列出對象的非私有方法 424
15.2.2 列出私有和受保護方法 426
15.2.3 獲得類和模塊的實例方法 427
15.2.4 列出對象的單例方法 429
15.3 變量和常量的自省機制 431
15.3.1 列出局部和全局變量 431
15.3.2 列出實例變量 431
15.4 執行追蹤 432
15.4.1 使用caller檢查棧追蹤 432
15.4.2 編寫工具以解析棧追蹤 433
15.5 回調和方法審查的實踐 436
15.5.1 MicroTest的背景: MiniTest 436
15.5.2 說明和實現 MicroTest 439
15.6 小結 441