Partager via


Retours et terminaison

Il existe deux expressions disponibles qui concluent l’exécution de la sous-routine actuelle ou du programme ; les expressions return et fail. En règle générale, les appelants peuvent mettre fin à leur exécution avant d’exécuter toutes leurs instructions avec une expression return ou fail. Une expression return termine simplement l’exécution de l’appelant actuel, tandis qu’une fail met fin à l’exécution de l’ensemble du programme et entraîne une erreur d’exécution.

Expression de retour

L’expression return quitte l’appelant actuel et retourne le contrôle à l’appelé. Il modifie le contexte de l’exécution en faisant apparaître une trame de pile.

L’expression retourne toujours une valeur au contexte de l’appelé ; il se compose du mot clé return, suivi d’une expression du type approprié. La valeur de retour est évaluée avant que toutes les actions de fin soient effectuées et que le contrôle soit retourné. Les actions de fin incluent, par exemple, le nettoyage et la libération des qubits alloués dans le contexte de l’appelant. Lors de l’exécution sur un simulateur ou un validateur, les actions de fin incluent souvent des vérifications liées à l’état de ces qubits. Par exemple, ils peuvent vérifier s’ils sont correctement démêlés de tous les qubits qui restent en direct.

L’expression return à la fin d’un appelant qui retourne une valeur Unit peut être omise. Dans ce cas, le contrôle est retourné automatiquement lorsque toutes les instructions se terminent et que toutes les actions de fin sont effectuées. Les appelants peuvent contenir plusieurs expressions return, même si l’implémentation adjointe pour les opérations contenant plusieurs expressions return ne peut pas être générée automatiquement.

Par exemple

return 1;

ou

return ();

Expression d’échec

L’expression fail termine entièrement le calcul. Il correspond à une erreur irrécupérable qui abandonne le programme.

Il se compose du mot clé fail, suivi d’une expression de type String. Le String doit fournir des informations sur l’échec rencontré.

Par exemple

fail "Impossible state reached";

ou, à l’aide d’une chaîne interpolée ,

fail $"Syndrome {syn} is incorrect";

En plus de la Stringdonnée, une expression fail collecte idéalement et permet la récupération d’informations sur l’état du programme. Cela facilite le diagnostic et la correction de la source de l’erreur, et nécessite la prise en charge du runtime et du microprogramme en cours d’exécution, qui peuvent varier entre différentes cibles.