條件分支
條件式分支是以表達式的形式 if
表示。 if
表達式是由 if
子句所組成,後面接著零個或多個elif
子句,並選擇性地包含 else-block。 每個子句都遵循模式
keyword condition {
<statements>
}
其中 keyword
會分別取代為 if
或 elif
,是 型Bool
別 的表達式,condition
而 <statements>
會取代為零個或多個語句。 選擇性 else
-block 是由 關鍵詞 else
所組成,後面接著以大括弧 {
}
括住的零個或多個語句。
評估為 true
要執行的第一個區塊condition
。 如果沒有任何條件評估為 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
表達式或更新在該區塊外部宣告的可變數。