天天看点

《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源码。

今天先写到这儿吧。