Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hay dos expresiones disponibles que concluyen la ejecución de la subrutina actual o el programa; return y las expresiones de fail. Por lo general, los invocables pueden finalizar su ejecución antes de ejecutar todas sus instrucciones con una expresión return o fail. Una expresión return acaba de finalizar la ejecución del actual invocable, mientras que un fail finaliza la ejecución de todo el programa y produce un error en tiempo de ejecución.
Expresión de devolución
La expresión return sale del actual invocable y devuelve el control al destinatario. Cambia el contexto de la ejecución al extraer un marco de pila.
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 realizar cualquier acción de terminación y se devuelve el control. Las acciones de terminación incluyen, por ejemplo, limpiar y liberar cúbits asignados dentro del contexto del invocable. Cuando se ejecuta en un simulador o validador, las acciones de terminación suelen incluir comprobaciones relacionadas con el estado de esos cúbits. Por ejemplo, pueden comprobar si están adecuadamente desenredados de todos los cúbits que permanecen activos.
La expresión return al final de un invocable que devuelve un valor de Unit se puede omitir. En ese caso, el control se devuelve automáticamente cuando se completan todas las instrucciones y todas las acciones de terminación realizadas. Los invocables pueden contener varias expresiones de return, aunque no se puede generar automáticamente la implementación adyacente para las operaciones que contienen varias expresiones de return.
Por ejemplo
return 1;
o
return ();
Expresión fail
La expresión fail finaliza completamente el cálculo. Corresponde a un error irrecuperable que anula el programa.
Consta de la palabra clave fail, seguida de una expresión de tipo String.
El String debe proporcionar información sobre el error detectado.
Por ejemplo
fail "Impossible state reached";
o bien, mediante una cadena interpolada ,
fail $"Syndrome {syn} is incorrect";
Además del Stringdado, una expresión fail 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 en ejecución, lo que puede variar entre distintos destinos.