看完这书,我在书上写了几段话:
“看完这本书,有种糊提贯顶的感觉,爽,可惜找不到人,不然好好聊聊”
“这本书写得真好,作者如行云流水,娓娓道来,把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源码。
今天先写到这儿吧。