産品特色
編輯推薦
這是Ruby的好時代!它的影響力可與Java和C++相媲美,它的動態特性可以讓代碼在運行時優雅地變化。它非常精巧,使應用程序、開發工具和管理腳本的創建變得更容易、更簡單。Ruby 2在漫長的等待之後終於到來,Ruby也逐漸有瞭自己活躍的開發社區,以及不計其數的庫和生産力工具。
本書是一部傑齣的學習指南,指導讀者從Ruby程序開始學習,逐步遞進到復雜的主題,如可調用對象、反射和綫程等。本書關注語言本身,讓讀者能夠自如地使用Ruby這門語言。第2版覆蓋瞭新的Ruby特性,如關鍵字參數、延遲枚舉器和新的模塊包含機製prepend,以及核心類和方法的新知識。
本書主要內容
● Ruby 概念的清晰闡述。
● 大量簡單的示例。
● 更新到 Ruby 2.1。
● 為讀者在任何場景下使用 Ruby 做足準備。
內容簡介
這是一本深受好評的書。它不僅是一本純Ruby的書,也不僅是一本純Rails的書,而是一本為Rails程序員“優化”過的Ruby書。
本書從Ruby編程語言的基礎開始一直講到動態特性,其中包含大量的真實代碼示例並附有詳細的注解,對日常使用Ruby進行編程中會遇到的每個知識點都進行瞭清晰的講解。本書的內容由淺入深,主要包含Ruby編程語言的語法、麵嚮對象的特性、默認對象self、控製流技術、常用的內置類、正則錶達式、I/O操作,用大量的篇幅講述瞭Ruby中值得關注的動態特性。
本書不僅適閤Ruby編程語言的初學者,也適閤有經驗的開發者以及那些想要真正提升Ruby編程技術的愛好者閱讀和學習,具有極高的參考價值。
作者簡介
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 o
Ruby程序員修煉之道 第2版 下載 mobi epub pdf txt 電子書 格式