Rückgaben und Beendigung
Es stehen zwei Ausdrücke zur Verfügung, mit denen die Ausführung der aktuellen Unterroutine oder des Programms abgeschlossen wird; die return
und die fail
Ausdrücke. Im Allgemeinen können aufrufbare Personen ihre Ausführung beenden, bevor sie alle ihre Anweisungen mit einem return
oder fail
Ausdruck ausführen. Ein return
Ausdruck beendet einfach die Ausführung des aktuellen Aufrufs, während ein fail
die Ausführung des gesamten Programms beendet und zu einem Laufzeitfehler führt.
Rückgabeausdruck
Der return
Ausdruck verlässt den aktuellen aufrufbaren Ausdruck und gibt die Steuerung an den Angerufenen zurück. Er ändert den Kontext der Ausführung, indem ein Stapelframe angezeigt wird.
Der Ausdruck gibt immer einen Wert in den Kontext des Angerufenen zurück. es besteht aus dem Schlüsselwort return
, gefolgt von einem Ausdruck des entsprechenden Typs. Der Rückgabewert wird ausgewertet, bevor beendete Aktionen ausgeführt werden und die Steuerung zurückgegeben wird. Beendete Aktionen umfassen z. B. das Bereinigen und Freigeben von Qubits, die im Kontext der aufrufbaren Funktion zugeordnet sind. Wenn Sie auf einem Simulator oder einer Validator ausgeführt werden, umfassen beendigungsaktionen häufig auch Prüfungen im Zusammenhang mit dem Status dieser Qubits. Beispielsweise können sie überprüfen, ob sie ordnungsgemäß von allen Qubits getrennt sind, die leben.
Der return
Ausdruck am Ende eines aufrufbaren Ausdrucks, der einen Unit
Wert zurückgibt, kann weggelassen werden. In diesem Fall wird die Steuerung automatisch zurückgegeben, wenn alle Anweisungen abgeschlossen sind und alle beendeten Aktionen ausgeführt werden. Aufrufbare können mehrere return
Ausdrücke enthalten, wenn die angrenzende Implementierung für Vorgänge mit mehreren return
Ausdrücken nicht automatisch generiert werden kann.
Zum Beispiel
return 1;
oder
return ();
Fehlerausdruck
Der fail
Ausdruck beendet die Berechnung vollständig. Es entspricht einem schwerwiegenden Fehler, der das Programm abbricht.
Es besteht aus dem Schlüsselwort fail
, gefolgt von einem Ausdruck vom Typ String
.
Der String
sollte Informationen zum aufgetretenen Fehler bereitstellen.
Zum Beispiel
fail "Impossible state reached";
oder mithilfe einer interpolierten Zeichenfolge
fail $"Syndrome {syn} is incorrect";
Neben dem gegebenen String
sammelt ein fail
Ausdruck idealerweise informationen über den Programmzustand und erlaubt den Abruf von Informationen. Dies erleichtert die Diagnose und Behebung der Fehlerquelle und erfordert Unterstützung von der Ausführungslaufzeit und Firmware, die je nach Ziel variieren kann.