2010-08-31 41 views
2

Ruby有「method_missing」,Tcl有「unknown」,並且大多數高度動態的語言都有一個等價的構造,當調用未定義的方法時會調用它。 添加這樣的功能是非常合理的;有些事情需要發生,並且沒有理由不允許程序員重新定義某些東西。這是相當微不足道的補充,它使一些整潔的「檢查我的語言可以做」演示。「method_missing」類型功能的合法用途是什麼?

這個行爲在真正的應用程序代碼中真正有用嗎?

所有我能想到的是:

  • 啓動調試器不展開堆棧也許有用的(但我不知道是否會爲「普通的應用程序代碼」算的,一個異常會工作在大多數情況下也是如此)。
  • 對於「神奇的」代理對象..即一個懶惰的對象,在第一次使用時被創建或加載而不會改變接口(儘管這看起來很容易通過其他方式來完成)。

還有其他合法用途嗎?

澄清:我並不真正將「語法糖避免必須鍵入引號」視爲合法用途。其他人可能,我不知道。

回答

相關問題