2011-02-15 61 views
4

當我無法使用catch/try時(即我放開的代碼超出了我的控制範圍),我想將堆棧展開到任意級別。這可能嗎?如何在沒有catch/try/raise的情況下展開(多級返回)堆棧?

例如,在測試中,我希望我的測試調用一個方法來檢查先決條件,如果不符合這些先決條件,則展開給測試的調用者(從caller[1]恢復)。由於測試線束不在我的控制範圍內,因此我無法在適當的位置設置catch塊。

回答

1

不可以。多層次退貨的唯一其他機制是callcc,但這也要求在超出您的控制範圍的情況下創建延續。

也就是說,在Ruby中沒有任何東西可以控制:您可以在測試框架中混淆該方法並添加任何您想要的代碼。

+0

真的嗎?我不認爲這可能是跨班的別名。 – RoUS 2011-02-24 21:52:47

相關問題