Comment se détendre (multi-niveau de retour) sur la pile, sans prise/essayer/raise?
-
14-11-2019 - |
Question
Je tiens à vous détendre, la pile à un niveau arbitraire lorsqu' catch
/try
n'est pas disponible (c'est à dire, le code de qui je suis déroulement est hors de mon contrôle).Est-ce possible?
Par exemple, dans les tests, je voudrais avoir mes tests appeler une méthode qui vérifie les conditions préalables, et se déroule à l'appelant de l'essai, si ceux prereqs ne sont pas remplies (reprise à caller[1]
).Depuis le harnais de test est hors de mon contrôle, je ne peux pas monter un catch
bloc à l'endroit approprié.
La solution
Pas de.La seule autre mécanisme de multi-niveau de revient est callcc
, mais qui requiert aussi de la création de la poursuite à un niveau qui est hors de votre contrôle.
Cela dit, en Ruby, rien n'est vraiment hors de votre contrôle:vous pourriez alias de la méthode dans le framework de test et d'ajouter le code que vous souhaitez.