前言 vii致謝 ix引言 xi“元”這個字眼 xii關于本書 xix關于你 xxii第1部分 Ruby元編程 1第1章 星期一:對象模型 31.1 跟Bill在一起的星期一 31.2 打開類 41.3 類的真相 91.4 小測驗:缺失的連接線 211.5 調用一個方法時發(fā)生了什么 231.6 小測驗:混亂的模塊 321.7 對象模型小結 35第2章 星期二:方法 372.1 一個重復代碼的問題 382.2 動態(tài)方法 402.3 method_missing()方法 482.4 小測驗:狩獵Bug 592.5 關于method_missing()方法的更多內容 61第3章 星期三:代碼塊 693.1 怎樣度過駝峰日 703.2 小測驗:Ruby的#符號 713.3 閉包 743.4 instance_eval() 83
3.5 可調用對象 863.6 編寫一種領域專屬語言 943.7 小測驗:更好的領域專屬語言 96第4章 星期四:類定義 1014.1 類定義揭秘 1024.2 小測驗:Taboo類 1094.3 單件方法 1104.4 Eigenclass 1164.5 小測驗:模塊的麻煩 1294.6 別名 1314.7 小測驗:打破數學規(guī)律 135第5章 星期五:編寫代碼的代碼 1395.1 帶路 1395.2 Kernel#eval 1425.3 小測驗:校驗過的屬性(第一步) 1525.4 小測驗:校驗過的屬性(第二步) 1555.5 小測驗:校驗過的屬性(第三步) 1575.6 小測驗:校驗過的屬性(第四步) 1585.7 鉤子方法 1595.8 小測驗:校驗過的屬性(第五步) 165第6章 尾聲 167第2部分“Rails中的元編程” 169第7章 ActiveRecord的設計 1717.1 準備旅程 1727.2 ActiveRecord的設計 1747.3 經驗教訓 183第8章 深入ActiveRecord 1878.1 動態(tài)屬性 1878.2 動態(tài)查找器 1958.3 經驗教訓 200第9章 安全元編程 2059.1 元編程的測試 2059.2 化解猴子補丁 2139.3 經驗教訓 218第三部分 附錄 221附錄A 常見慣用法 223A.1 擬態(tài)方法 223A.2 空指針保護 226A.3 關于方法參數的技巧 227A.4 Self Yield 231A.5 Symbol#to_proc()方法 232附錄B 領域專屬語言 235B.1 關于領域專屬語言 235B.2 內部和外部領域專屬語言 237B.3 領域專屬語言和元編程 238附錄C 法術手冊 239C.1 法術集 239附錄D 參考書目 251索引 253