Ruby程序員修煉之道 第2版( 簡體 字) | |
作者:[美] 戴維 A. 布萊克 ( David A. Black ) | 類別:1. -> 程式設計 -> Ruby |
出版社:人民郵電出版社 | 3dWoo書號: 45410 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:10/1/2016 | |
頁數:442 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115405036 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第一部分 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 這是一本深受好評的書。它不僅是一本純Ruby的書,也不僅是一本純Rails的書,而是一本為Rails程序員“優化”過的Ruby書。
本書從Ruby編程語言的基礎開始一直講到動態特性,其中包含大量的真實代碼示例并附有詳細的注解,對日常使用Ruby進行編程中會遇到的每個知識點都進行了清晰的講解。本書的內容由淺入深,主要包含Ruby編程語言的語法、面向對象的特性、默認對象self、控制流技術、常用的內置類、正則表達式、I/O操作,用大量的篇幅講述了Ruby中值得關注的動態特性。 本書不僅適合Ruby編程語言的初學者,也適合有經驗的開發者以及那些想要真正提升Ruby編程技術的愛好者閱讀和學習,具有極高的參考價值。 |