Compartilhar via


Devoluções e término

Há duas expressões disponíveis que concluem a execução da sub-rotina atual ou do programa; as return expressões e fail . Geralmente, os callables podem encerrar sua execução antes de executar todas as instruções com uma return expressão ou fail . Uma return expressão encerrará apenas a execução do callalbe atual, enquanto um fail encerrará a execução de todo o programa e resultará em um erro de runtime.

Expressão de retorno

A return expressão sai do callable atual e retorna o controle para o receptor. Ela altera o contexto da execução ao remover o registro de ativação mais recente da pilha.

A expressão sempre retorna um valor para o contexto do receptor; ele consiste no palavra-chave return, seguido por uma expressão do tipo apropriado. O valor retornado é avaliado antes que qualquer ação de encerramento seja executada e o controle seja retornado. Essas ações de encerramento incluem, por exemplo, limpar e liberar os qubits que foram alocados no contexto do chamável. Em execuções em um simulador ou validador, as ações de encerramento geralmente também incluem verificações relacionadas ao estado desses qubits, por exemplo, se eles estão devidamente desentrelaçados de todos os qubits que continuam ativos.

A return expressão no final de um callable que retorna um Unit valor pode ser omitida. Nesse caso, o controle será retornado automaticamente quando todas as instruções forem executadas e todas as ações de encerramento forem realizadas. Os callables podem conter várias return expressões, embora a implementação adjacente para operações que contêm várias return expressões não possa ser gerada automaticamente.

Por exemplo,

return 1;

ou

return ();

Expressão de falha

A fail expressão encerra totalmente a computação. Ela corresponde a um erro fatal que anula o programa.

Ele consiste no palavra-chave fail, seguido por uma expressão do tipo String. O String deve fornecer informações sobre a falha encontrada.

Por exemplo,

fail "Impossible state reached";

ou, usando uma cadeia de caracteres interpolada,

fail $"Syndrome {syn} is incorrect";

Além do determinado String, uma fail expressão idealmente coleta e permite a recuperação de informações sobre o estado do programa. Isso facilita o diagnóstico e a correção da origem do erro e exige o suporte do runtime e do firmware em execução, o que pode variar entre diferentes destinos.