Ruby元编程小结(五)单件方法允许给单个对象增加一个方法。singleton methods# test.rbstr = "My name is caoqing."def str.title? self.upcase == selfendputs str.title?puts str.methods.grep(/^title?/)puts str.singleton_methodsresult =>falsetitle?title?类方法的本质,类是对象,类名是常量。在类上调用方法和对象调用方法一样:obj.my_methodCla.class_methodDuck Typing:对象能不能响应方法,可以是普通方法或者单件方法。类方法的实质就是他们是类的一个单件方法。def obj.method # method bodyendobj可以是对象引用,常量类名或self。类宏(Class Macro)Ruby对象没有属性,可以使用拟态方法定义属性。Module#attr_*()方法中的一员来定义访问器。类宏不是关键字而是方法。Eigenclass单件方法按照常规的方法查找在祖先链无法找到保存的地方,obj是对象不能保存,也不能存在于class内,否则所有的实例都可以共享这个方法。对象拥有一个特有的隐藏类,称为该对象的eigenclass。进入eigenclass作用域:class << obj codeend如果想获取eigenclass的引用,则可以在离开该作用域时返回self: