天天看點

《ruby元程式設計》讀後感

看完這書,我在書上寫了幾段話:

“看完這本書,有種糊提貫頂的感覺,爽,可惜找不到人,不然好好聊聊”

“這本書寫得真好,作者如行雲流水,娓娓道來,把Ruby對象模型一層層剝開。寫得好,我不覺讀了一遍又一遍。表達能力太重要了,我今後要加強表達能力的訓練。”

說實話,這本書,我很早就買了,但當時一直沒讀。我經常逛京東,基本一有寫得好的新書,立即就買了。在買書上,我是很大方的。也許我舍不得吃好點,但買書上,我沒有心疼的感覺。

在過了一段後,我撿起這本書重讀,慢慢進入意境,越讀越爽。

下面把我自己的一些了解,寫下來,就象看代碼一樣,把自己的所思所想,記下來。

記錄自己曾經用過的時間,不為别的。隻為了記錄曾真正感動過自己的一切。

第一章

打開類技術,就是對已經存在的類,你可重新打開,增删除改方法。

這個倒好了解,關鍵的,作者把class看成一種作用域操作符,而不是類型聲明語句。當時可把我難住了。确實,如果看成作者域,當然可以随時打開、關閉。

接着,作者介紹了類的真相。就是對象中隻存儲有變量,而方法等存儲在類中。

記得侯傑曾有一書,深入介紹C++對象模型,其中也講到這一點。但作者說,每個對象中的變量都可能不用,如

class Myclass

 def my_methods

  @v=1

 end

end

obj=Myclass.new

此時,obj是沒有任何對象變量的,隻有調用

obj.my_methods()

後,才會有變量存在。當時很是不解。對象有的變量不是固定的話,作者把對象的變量看成哈希表的值,費了好久才了解。

方法呢?不在對象中,這我可以了解。就象我們的錢,都存儲在銀行中一樣。因為如果每個對象都存儲一組方法定義,這太多餘了。就象每個人都把全部錢放地身上一樣,沒必要。

作者接着仔細介紹方法查找的過程。

在設計模式中,有責任鍊模式,就是一個對象接到指令,他能處理,就處理,不能處理就交給上級;上級也同樣處理。

我感覺,方法的查找也一樣,Ruby應該在對象定義後,存儲了方法鍊,然後一級一級查找。

這個我可以了解。不過,self這真是了解不了。甚至有段時間,想找ruby的源碼讀,到底self是啥意思,但找到源碼一看,發現處理選項時的代碼和sed的getopt.c,getopt.h的幾乎一樣,于是我就又回到了gnu源碼。

今天先寫到這兒吧。