Návratové hodnoty a ukončení
K dispozici jsou dva výrazy, které završují spuštění aktuálního podprogramu nebo programu; a return
fail
výrazy. Obecně platí, že volatelné můžou ukončit své spuštění před spuštěním všech svých příkazů pomocí výrazu return
nebo fail
. Výraz return
pouze ukončí spuštění aktuálního volání, zatímco fail
výraz ukončí provádění celého programu a výsledkem bude chyba za běhu.
Výraz Return
Výraz return
ukončí aktuální volatelnou hodnotu a vrátí řízení volanýmu. Změní kontext spuštění tím, že zobrazí rámec zásobníku.
Výraz vždy vrátí hodnotu kontextu volaného; skládá se z klíčového slova return
následovaného výrazem příslušného typu. Vrácená hodnota se vyhodnocuje před provedením všech ukončujících akcí a vrácením řízení. Ukončovací akce zahrnují například vyčištění a uvolnění qubitů, které jsou přiděleny v kontextu volatelného. Při spuštění na simulátoru nebo validátoru ukončovací akce často zahrnují také kontroly související se stavem těchto qubitů, například jestli jsou správně oddělené od všech qubitů, které zůstávají aktivní.
Výraz return
na konci volatelného výrazu Unit
, který vrací hodnotu, může být vynechán. V takovém případě se ovládací prvek vrátí automaticky, když jsou spuštěny všechny příkazy a byly provedeny všechny ukončující akce. Volatelné výrazy mohou obsahovat více return
výrazů, i když adjoint implementace pro operace obsahující více return
výrazů nelze automaticky vygenerovat.
Třeba
return 1;
nebo
return ();
Výraz selhání
Výraz fail
zcela ukončí výpočet. Odpovídá závažné chybě, která program přeruší.
Skládá se z klíčového slova fail
, za kterým následuje výraz typu String
.
Nástroj String
by měl obsahovat informace o zjištěném selhání.
Třeba
fail "Impossible state reached";
nebo pomocí interpolovaného řetězce
fail $"Syndrome {syn} is incorrect";
Kromě daného String
výrazu fail
v ideálním případě shromažďuje a umožňuje načítání informací o stavu programu. To usnadňuje diagnostiku a nápravu zdroje chyby a vyžaduje podporu ze spuštěného modulu runtime a firmwaru, který se může u různých cílů lišit.