Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Existem duas expressões disponíveis que concluem a execução da sub-rotina atual ou do programa; as return e as fail expressões. Geralmente, os chamáveis podem terminar sua execução antes de executar todas as suas declarações com uma expressão return ou fail. Uma expressão return apenas termina a execução do chamável atual, enquanto um fail termina a execução de todo o programa e resulta em um erro de tempo de execução.
Expressão de retorno
A expressão return sai do chamável atual e retorna o controle para o destinatário. Ele altera o contexto da execução exibindo um quadro de pilha.
A expressão sempre retorna um valor para o contexto do destinatário; consiste na palavra-chave return, seguida de uma expressão do tipo apropriado. O valor de retorno é avaliado antes que quaisquer ações de encerramento sejam executadas e o controle seja retornado. As ações de encerramento incluem, por exemplo, limpar e liberar qubits alocados dentro do contexto do chamável. Ao executar em um simulador ou validador, as ações de encerramento geralmente também incluem verificações relacionadas ao estado desses qubits. Por exemplo, eles podem verificar se estão devidamente desembaraçados de todos os qubits que permanecem ativos.
A expressão return no final de um chamável que retorna um valor Unit pode ser omitida. Nesse caso, o controle é retornado automaticamente quando todas as instruções são concluídas e todas as ações de encerramento executadas. Os callables podem conter várias expressões return, embora a implementação adjoint para operações contendo várias expressões return não possa ser gerada automaticamente.
Por exemplo
return 1;
ou
return ();
Expressão de falha
A expressão fail termina totalmente o cálculo. Corresponde a um erro fatal que aborta o programa.
Consiste na palavra-chave fail, seguida de uma expressão do tipo String.
O String deve fornecer informações sobre a falha encontrada.
Por exemplo
fail "Impossible state reached";
ou, utilizando uma cadeia de interpolada,
fail $"Syndrome {syn} is incorrect";
Além da Stringdada, uma expressão fail 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 requer suporte do tempo de execução e do firmware, que podem variar entre diferentes destinos.