Delen via


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.