對(duì)象模型
面試被問(wèn)了幾次 Ruby 的對(duì)象模型,也有被要求畫出來(lái)對(duì)象模型圖武氓,查找資料后钞脂,手動(dòng)畫了幾遍敛苇。關(guān)鍵詞可以搜索祖先鏈(ancestors chain)竭鞍。
Ruby 對(duì)象模型圖
代碼演示:
class Dog; end
tidy = Dog.new
tidy.class => Dog
tidy.superclass => Module
Dog.class => Class
Dog.superclass => Object
Class.superclass => Module
Class.class => Class
Module.class => Class
Module.superclass => Object
Object.class => Class
Object.superclass => BasicObject
BasicObject.class => Class
BasicObject.superclass => nil
方法查找
Ruby 中的方法查找(method lookup)也需要掌握。關(guān)鍵點(diǎn)在于對(duì)祖先鏈(ancestors chain)的理解基礎(chǔ)上裆熙,再了解 Ruby 中的向右向上查找(one step to the right, then up)原則:向右一步端礼,進(jìn)入方法接受者(receiver,也就是方法的調(diào)用者) 所屬的類入录,然后再向上查找祖先鏈蛤奥,直到找到目標(biāo)方法。如果遍歷完祖先鏈也沒(méi)有找到方法的話僚稿,會(huì)調(diào)用method_missing方法凡桥,如果這個(gè)方法沒(méi)有被定義,則拋出NoMethodError蚀同。