2010-06-10 22 views
2

我的應用程序允許用戶間接創建自己的方法,我後來需要參考這些方法。我想知道是否有一種方法(用於錯誤檢查的目的)來測試一個方法是否存在而不嘗試執行它。如果我只是嘗試調用該方法,但它不存在,這會使我的應用程序崩潰。反正有「探測」一種常見方法lisp

回答

4

它不會真的崩潰,但表示一個條件。如果沒有處理這個條件,調試器將被輸入。有關如何使用條件系統的信息,請參閱CLHS,Section 9.1

無論如何,你可以簡單地使用fboundp進行檢查。

+0

非常感謝你!無論如何去解析fboundp返回的方法來確定預期調用者的類應該是什麼? – Mike2012 2010-06-11 19:52:42

+0

'fboundp'返回一個泛化的布爾值,指示該名稱的函數是否存在(我可能誤解了你的問題的意圖)。 「預期呼叫者的類別」是無關緊要的;我想你是說這個方法的專家。查看Rainer的答案(使用'find-method')。 – Svante 2010-06-11 20:09:14

1

一個解決方案是提供一個「什麼都不做」 GF方法,調度對T類(所有類的父類)。你需要爲所有你實施方法的GF。爲了審計目的,也可以讓「無所事事」方法記錄一些數據,也許是每個參數的類。

相關問題