共用方式為


退回和終止

有兩個運算式可用來結束目前副程式或程式的執行; returnfail 運算式。 一般而言,可呼叫者可能會在使用 或 fail 運算式執行其所有語句 return 之前結束執行。 運算式 return 只會結束目前 callalbe 的執行,而 fail 將會結束整個程式的執行,並產生執行階段錯誤。

傳回運算式

運算式 return 會從目前的可呼叫端結束,並將控制權傳回給被呼叫者。 其會藉由彈出堆疊框架來變更執行內容。

運算式一律會將值傳回給被呼叫者的內容;它包含 關鍵字 return ,後面接著適當類型的運算式。 傳回值會在執行任何終止動作並傳回控制權之前評估。 終止動作包括清除和釋放在可呼叫內容中配置的量子位。 在模擬器或驗證程式上執行時,終止動作通常也包含與這些量子位狀態相關的檢查,例如,它們是否與所有仍存留的量子位適當分離。

return傳回 Unit 值的可呼叫端運算式可能會省略。 在此情況下,當所有語句都已執行且已執行所有終止動作時,會自動傳回控制項。 可呼叫項可能包含多個 return 運算式,但無法自動產生包含多個 return 運算式之作業的相鄰實作。

例如

return 1;

return ();

Fail 運算式

運算式 fail 會完全結束計算。 它會對應至中止程式的嚴重錯誤。

它包含 關鍵字 fail ,後面接著 類型的 String 運算式。 String應該提供所發生失敗的相關資訊。

例如

fail "Impossible state reached";

或者,使用差補字串

fail $"Syndrome {syn} is incorrect";

除了指定的 String 之外, fail 運算式最好會收集並允許擷取程式狀態的相關資訊。 這有助於診斷和補救錯誤的來源,而且需要執行執行時間和韌體的支援,這可能會因不同目標而有所不同。