在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。
类本身也是对象,所有实例对象上的规则,同样可以适用于类对象本身。
类的继承体系: