Compartir a través de


Devoluciones y finalización

Hay dos expresiones disponibles que concluyen la ejecución de la subrutina actual o el programa; y las returnfail expresiones . Por lo general, los invocables pueden finalizar su ejecución antes de ejecutar todas sus instrucciones con una return expresión o fail . Una return expresión solo finalizará la ejecución del callalbe actual, mientras que un fail finalizará la ejecución de todo el programa y dará como resultado un error en tiempo de ejecución.

Expresión de retorno

La return expresión sale del actual invocable y devuelve el control al destinatario. Muestra un marco de pila para cambiar el contexto de la ejecución.

La expresión siempre devuelve un valor al contexto del destinatario; consta de la palabra clave return, seguida de una expresión del tipo adecuado. El valor devuelto se evalúa antes de que se realicen las acciones de terminación y se devuelva el control. Estas acciones de terminación incluyen, por ejemplo, limpiar y liberar los cúbits que se han asignado en el contexto del invocable. Cuando se ejecutan en un simulador o validador, las acciones de terminación a menudo también incluyen comprobaciones relacionadas con el estado de esos cúbits, por ejemplo, si están desentrelazados correctamente de todos los cúbits que permanecen activos.

Se return puede omitir la expresión al final de un invocable que devuelve un Unit valor. En ese caso, el control se devuelve automáticamente cuando se han ejecutado todas las instrucciones y se han realizado todas las acciones de terminación. Los invocables pueden contener varias return expresiones, aunque la implementación adyacente para las operaciones que contienen varias return expresiones no se puede generar automáticamente.

Por ejemplo,

return 1;

or

return ();

Expresión fail

La fail expresión finaliza el cálculo por completo. Corresponde a un error irrecuperable que anula el programa.

Consta de la palabra clave fail, seguida de una expresión de tipo String. String debe proporcionar información sobre el error detectado.

Por ejemplo,

fail "Impossible state reached";

o mediante una cadena interpolada,

fail $"Syndrome {syn} is incorrect";

Además de la determinada String, una fail expresión idealmente recopila y permite la recuperación de información sobre el estado del programa. Esto facilita el diagnóstico y la solución del origen del error, y requiere compatibilidad con el entorno de ejecución y el firmware, lo que puede variar entre diferentes destinos.