4
當我無法使用catch
/try
時(即我放開的代碼超出了我的控制範圍),我想將堆棧展開到任意級別。這可能嗎?如何在沒有catch/try/raise的情況下展開(多級返回)堆棧?
例如,在測試中,我希望我的測試調用一個方法來檢查先決條件,如果不符合這些先決條件,則展開給測試的調用者(從caller[1]
恢復)。由於測試線束不在我的控制範圍內,因此我無法在適當的位置設置catch
塊。
當我無法使用catch
/try
時(即我放開的代碼超出了我的控制範圍),我想將堆棧展開到任意級別。這可能嗎?如何在沒有catch/try/raise的情況下展開(多級返回)堆棧?
例如,在測試中,我希望我的測試調用一個方法來檢查先決條件,如果不符合這些先決條件,則展開給測試的調用者(從caller[1]
恢復)。由於測試線束不在我的控制範圍內,因此我無法在適當的位置設置catch
塊。
不可以。多層次退貨的唯一其他機制是callcc
,但這也要求在超出您的控制範圍的情況下創建延續。
也就是說,在Ruby中沒有任何東西可以控制:您可以在測試框架中混淆該方法並添加任何您想要的代碼。
真的嗎?我不認爲這可能是跨班的別名。 – RoUS 2011-02-24 21:52:47