條件式分支是以 if 表達式的形式表示。
if 表示式是由 if 子句所組成,後面接著零個或多個 elif 子句,以及選擇性地包含 else-block。 每個子句都遵循模式
keyword condition {
<statements>
}
其中 keyword 分別以 if 或 elif 取代,condition 是類型為 Bool的表達式,而 <statements> 會以零或多個語句取代。 選擇性 else-block 是由 關鍵字 else 所組成,後面接著以大括弧括住的零個或多個語句,{}。
condition 評估為 true 執行的第一個區塊。 如果沒有任何條件評估為 true,則 else 區塊會執行。 區塊會在自己的範圍內執行,這表示區塊結束之後,不會顯示做為區塊一部分的任何系結。
例如,假設 qubits 是類型 Qubit[],且 r1 和 r2 的類型為 Result、
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
您也可以以 條件表示式的形式來表示簡單分支。
目標特定限制
控制流程建構與量子計算之間的緊密整合對目前的量子硬體構成挑戰。 某些量子處理器不支持根據測量結果進行分支處理。 因此,Result 類型的值比較一律會導致 Q# 程式在這類硬體上執行的編譯錯誤。
其他量子處理器會根據度量結果支援特定種類的分支。
Q# 中支援的較一般 if 表示式會編譯成可在這類處理器上執行的適當指示。 加總的限制是,Result 類型的值只能做為作業中 if 表達式內條件的一部分進行比較。 此外,條件式執行區塊不能包含任何 return 表示式,或更新在該區塊外部宣告的可變數。