4

我想在catch/try不可用时将堆栈展开到任意级别(即,我要展开的代码不受我的控制)。这可能吗?

例如,在测试中,我想让我的测试调用一个检查先决条件的方法,如果不满足这些先决条件,则将其展开给测试的调用者(在 恢复caller[1])。由于测试工具超出了我的控制范围,因此我无法catch在适当的位置设置块。

4

1 回答 1

1

不。多级退货的唯一其他机制是callcc,但这也需要在您无法控制的级别上创建延续。

也就是说,在 Ruby 中没有什么是你无法控制的:你可以在测试框架中为方法设置别名并添加任何你想要的代码。

于 2011-02-24T21:07:30.087 回答