Returer och uppsägning
Det finns två tillgängliga uttryck som avslutar körningen av den aktuella underrutinen eller programmet. och return
uttrycken fail
. I allmänhet kan anropbara objekt avsluta körningen innan de kör alla sina -instruktioner med ett return
eller fail
-uttryck. Ett return
uttryck avslutar bara körningen av det aktuella anropet, medan ett fail
avslutar körningen av hela programmet och resulterar i ett körningsfel.
Returuttryck
Uttrycket return
avslutas från den aktuella anropbara och returnerar kontrollen till anroparen. Det ändrar kontexten för körningen genom att poppa en stackram.
Uttrycket returnerar alltid ett värde till kontexten för anroparen. det består av nyckelordet return
, följt av ett uttryck av lämplig typ. Returvärdet utvärderas innan några avslutande åtgärder utförs och kontrollen returneras. Avslutande åtgärder omfattar till exempel rensning och borttagning av kvantbitar som allokeras inom kontexten för anropsbara objekt. När du kör på en simulator eller validator omfattar avslutande åtgärder ofta även kontroller relaterade till tillståndet för dessa kvantbitar, till exempel om de är korrekt disentangled från alla qubitar som förblir live.
Uttrycket return
i slutet av en anropbar fil som returnerar ett Unit
värde kan utelämnas. I så fall returneras kontrollen automatiskt när alla instruktioner har körts och alla avslutande åtgärder har utförts. Anropsbara objekt kan innehålla flera return
uttryck, även om den angränsande implementeringen för åtgärder som innehåller flera return
uttryck inte kan genereras automatiskt.
Exempel:
return 1;
eller
return ();
Feluttryck
Uttrycket fail
avslutar beräkningen helt och hållet. Det motsvarar ett allvarligt fel som avbryter programmet.
Det består av nyckelordet fail
, följt av ett uttryck av typen String
.
String
Bör ge information om det påträffade felet.
Exempel:
fail "Impossible state reached";
eller, med hjälp av en interpolerad sträng,
fail $"Syndrome {syn} is incorrect";
Förutom den angivna String
samlar ett fail
uttryck helst in och tillåter hämtning av information om programtillståndet. Detta underlättar diagnostisering och åtgärd av källan till felet och kräver stöd från körningen och den inbyggda programvaran, som kan variera mellan olika mål.