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: