Ruby元编程小结(五) 单件方法容许给单个对象增长一个方法。singleton methods # test.rb str = "My name is caoqing." def str.title? self.upcase == self end puts str.title? puts str.methods.grep(/^title?/) puts str.singleton_methods result => false title? title? 类方法的本质,类是对象,类名是常量。在类上调用方法和对象调用方法同样: obj.my_method Cla.class_method Duck Typing:对象能不能响应方法,能够是普通方法或者单件方法。 类方法的实质就是他们是类的一个单件方法。 def obj.method # method body end obj能够是对象引用,常量类名或self。 类宏(Class Macro) Ruby对象没有属性,能够使用拟态方法定义属性。 Module#attr_*()方法中的一员来定义访问器。类宏不是关键字而是方法。 Eigenclass 单件方法按照常规的方法查找在祖先链没法找到保存的地方,obj是对象不能保存,也不能存在于class内,不然全部的实例均可以共享这个方法。 对象拥有一个特有的隐藏类,称为该对象的eigenclass。 进入eigenclass做用域: class << obj code end 若是想获取eigenclass的引用,则能够在离开该做用域时返回self: