Retourneren en beëindigen
Er zijn twee expressies beschikbaar die de uitvoering van de huidige subroutine of het programma afsluiten; en return
de fail
expressies. Over het algemeen kunnen aanroepbare personen hun uitvoering beëindigen voordat alle instructies worden uitgevoerd met een return
of-expressie fail
. Een return
expressie beëindigt alleen de uitvoering van de huidige callalbe, terwijl een fail
de uitvoering van het hele programma beëindigt en resulteert in een runtimefout.
Retourexpressie
De return
expressie verlaat de huidige aanroepbare en retourneert het besturingselement naar de aanroeper. De context van de uitvoering wordt gewijzigd door een stackframe te openen.
De expressie retourneert altijd een waarde in de context van de aangeroepene; het bestaat uit het trefwoord return
, gevolgd door een expressie van het juiste type. De retourwaarde wordt geëvalueerd voordat eventuele afsluitacties worden uitgevoerd en het besturingselement wordt geretourneerd. Afsluitacties omvatten bijvoorbeeld het opschonen en vrijgeven van qubits die zijn toegewezen binnen de context van het aanroepbare. Bij het uitvoeren van een simulator of validator omvatten afsluitacties vaak ook controles met betrekking tot de status van die qubits, bijvoorbeeld of ze correct zijn losgekoppeld van alle qubits die live blijven.
De return
expressie aan het einde van een aanroepbare die een Unit
waarde retourneert, kan worden weggelaten. In dat geval wordt het besturingselement automatisch geretourneerd wanneer alle instructies zijn uitgevoerd en alle afsluitacties zijn uitgevoerd. Aanroepbare items kunnen meerdere return
expressies bevatten, hoewel de aangrenzende implementatie voor bewerkingen met meerdere return
expressies niet automatisch kan worden gegenereerd.
Bijvoorbeeld:
return 1;
of
return ();
Fail-expressie
Met de fail
expressie wordt de berekening volledig beëindigd. Dit komt overeen met een fatale fout die het programma afbreekt.
Het bestaat uit het trefwoord fail
, gevolgd door een expressie van het type String
.
De String
moet informatie bevatten over de opgetreden fout.
Bijvoorbeeld:
fail "Impossible state reached";
of, met behulp van een geïnterpoleerde tekenreeks,
fail $"Syndrome {syn} is incorrect";
Naast de opgegeven String
, verzamelt en staat een fail
expressie idealiter het ophalen van informatie over de programmastatus toe. Dit vereenvoudigt het diagnosticeren en oplossen van de bron van de fout en vereist ondersteuning van de uitvoerende runtime en firmware, die kunnen variëren tussen verschillende doelen.