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 returnfail 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 returnná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 Stringvý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.