條件表達式是由三個子表達式所組成,其中最左邊的子表達式類型為 Bool
,並判斷要評估另外兩個子表達式的其中一個。 它們是表單
cond ? ifTrue | ifFalse
具體來說,如果 cond
評估為 true
,則條件表達式會評估為 ifTrue
表達式;否則,它會評估為 ifFalse
表達式。 另一個表達式(分別 ifFalse
和 ifTrue
表示式)永遠不會評估,就像 if
語句中的分支一樣。
例如,在表達式 a == b ? C(qs) | D(qs)
中,如果 a
等於 b
,則會叫用可呼叫的 C
。 否則,會叫用 D
。
ifTrue
與 ifFalse
表示式的類型必須具有 通用基底類型。 與其最終產生表達式評估的值無關,其類型一律符合決定的基底類型。
例如,如果
-
Op1
的類型為Qubit[] => Unit is Adj
-
Op2
的類型為Qubit[] => Unit is Ctl
-
Op3
的類型為Qubit[] => Unit is Adj + Ctl
然後
-
cond ? Op1 | Op2
的類型為Qubit[] => Unit
-
cond ? Op1 | Op3
的類型為Qubit[] => Unit is Adj
-
cond ? Op2 | Op3
的類型為Qubit[] => Unit is Ctl
如需詳細資訊,請參閱 子式。