現在のサブルーチンまたはプログラムの実行を終了する 2 つの式があります。return
と fail
式。 一般に、呼び出し可能な呼び出し可能関数は、return
または fail
式を使用してすべてのステートメントを実行する前に実行を終了できます。
return
式は現在の呼び出し可能な呼び出し可能な実行を終了するだけです。一方、fail
はプログラム全体の実行を終了し、ランタイム エラーが発生します。
戻り値の式
return
式は、現在の呼び出し可能な呼び出し元から終了し、呼び出し先に制御を返します。 スタック フレームをポップして、実行のコンテキストを変更します。
式は常に呼び出し先のコンテキストに値を返します。キーワード return
で構成され、その後に適切な型の式が続きます。 終了アクションが実行され、制御が返される前に、戻り値が評価されます。 終了アクションには、たとえば、呼び出し可能なコンテキスト内で割り当てられる量子ビットのクリーンアップと解放が含まれます。 シミュレーターまたは検証コントロールで実行する場合、多くの場合、終了アクションには、それらの量子ビットの状態に関連するチェックも含まれます。 たとえば、ライブ状態のままのすべての量子ビットから正しくアンタングルされているかどうかを確認できます。
Unit
値を返す呼び出し可能オブジェクトの末尾にある return
式は省略できます。 その場合、すべてのステートメントが完了し、すべての終了アクションが実行されると、制御が自動的に返されます。 呼び出し可能オブジェクトには複数の return
式を含めることができますが、複数の return
式を含む操作の隣接する実装を自動的に生成することはできません。
たとえば、
return 1;
又は
return ();
Fail 式
fail
式は計算を完全に終了します。 これは、プログラムを中止する致命的なエラーに対応します。
キーワード fail
、その後に String
型の式で構成されます。
String
は、発生したエラーに関する情報を提供する必要があります。
たとえば、
fail "Impossible state reached";
または、補間文字列を使用して、
fail $"Syndrome {syn} is incorrect";
指定された String
に加えて、fail
式は、プログラムの状態に関する情報を収集して取得することを理想的に許可します。 これにより、エラーの原因の診断と修正が容易になり、実行中のランタイムとファームウェアからのサポートが必要になります。これは、ターゲットによって異なる場合があります。