在Ruby的世界中,程式員們享受著各種光怪陸離的文法糖,也經曆著各種各樣的陷阱。而這一切的根本就在於Ruby強大 的元編程能力。元編程就像Ruby世界的魔法,當其是白魔法的時候可以協助你把程式變得異常簡潔,美觀;而當其是黑魔法 的時候,你將會迷失在一些很難解釋的Bug中。
《Ruby元編程》就是一部告訴大家如何使用,控制Ruby元編程魔法的 秘籍。該書的寫作手法非常值得稱道,作者把所有的知識點濃縮在了一個星期的工作過程中,通過一個菜鳥和大牛針對項目 中遇到的各種問題的討論,解決來引入各種元編程的知識點。 除此之外,在每個知識點的結尾處都還附帶了有趣的小測驗 , 讓讀者可以跟隨著菜鳥的思路,感受到自己在一步一步的掌握元編程的思想。這一切的編排讓這本書讀起來非常的有趣 ,並且書中的理論知識與項目中的實戰相結合的講述方式,讓讀者更容易去思考如何在自己的項目中運用這些知識。
我是從同事的口中聽說這本書的,他讀完這本書之後說:“這本書基本上改變了其寫代碼的習慣。”,作為一個碼 齡超過10年的程式員。如此讚譽一本書,讓我決心一定要讀一下這本書,讀完之後,此書果然不負此讚譽。不管是初級程式 員,還是編程高手,都應該讀一下這本書,如果你是Ruby程式員,那麼這本書可以算是必讀書之一。該書分為2個部分。第 一部分從物件模型,方法,代碼塊,類定義等方面一一剖析Ruby的設計原理,然後再通過執行個體告訴大家如何在實際應用中有 效的利用這些設計原理,同時作者還非常善良的提醒了大家在使用這些技巧時的注意事項,防止這些魔法變成黑魔法。第二 部分是剖析Rails中使用到的各種元編程技巧,讀過之後,對理解Rails底層實現裨益良多,當然,對Rails無愛的讀者可以直 接略過。
物件模型
提到對象,程式員首先想到的就是類這個概念,在本書第一章中,作者首先對Ruby世界的 類進行了一番基礎的講解:
不同於JAVA等靜態語言,類定義中只能執行定義變數和方法的語句,在Ruby中,類定義的代碼和其他的代碼是一樣的, 可以在其中執行任何的Ruby語句。
Ruby天生具有開啟一個已經存在的類,並動態修改其內容的能力,但需注意猴子補丁的問題。
類的執行個體變數是儲存在對象中,執行個體變數與該對象的類沒有關係,當給對象的執行個體變數賦值時,該執行個體變數就產生了, 執行個體變數就像是一個掛載在對象上的HashMap,每個對象都可以擁有自己不同的HashMap。
方法的定義在對象自身的類中,因為“共用同一個類的對象也必須共用同樣的方法”。但是,不能說Class有一個叫做“ method”的方法,因為無法使用"Class.method"調用該方法,而要說Class有一個執行個體方法“method”,這意味 著必須建立該類的執行個體對象,通過執行個體對象調用該方法。
Ruby中同樣可以定義類方法,或者說類宏,定義方法時,在方法名前加“self.”或者“類名.”首碼即可, 然後可以在 類中像使用關鍵字一樣使用該方法,依靠類宏,可以實現很多非常簡潔的DSL。
類本身也是對象,所有執行個體對象上的規則,同樣可以適用於類對象本身。
類的繼承體系: