4

catch/tryが使用できない場合 (つまり、巻き戻し先のコードが制御不能な場合) 、スタックを任意のレベルに巻き戻したいと考えています。これは可能ですか?

たとえば、テストでは、前提条件をチェックするメソッドをテストで呼び出し、それらの前提条件が満たされていない場合はテストの呼び出し元に巻き戻したいと思います (resume at caller[1])。catchテスト ハーネスが制御不能になっているため、適切な場所にブロックを設定できません。

4

1 に答える 1

1

いいえ。マルチレベル リターンの唯一の他のメカニズムは ですがcallcc、それも、制御できないレベルで継続を作成する必要があります。

とは言うものの、Ruby では実際に制御できないことは何もありません。テスト フレームワークでメソッドにエイリアスを設定し、必要なコードを追加することができます。

于 2011-02-24T21:07:30.087 に答える