Wyrażenia warunkowe
Wyrażenia warunkowe składają się z trzech wyrażeń podrzędnych, w których najbardziej lewe wyrażenie podrzędne jest typu Bool
i określa, które z dwóch innych wyrażeń podrzędnych jest obliczane. Są one w formie
cond ? ifTrue | ifFalse
W szczególności, jeśli cond
oblicza true
, wyrażenie warunkowe oblicza wyrażenie ifTrue
; w przeciwnym razie oblicza wyrażenie ifFalse
. Drugie wyrażenie (odpowiednio wyrażenie ifFalse
i ifTrue
) nigdy nie jest obliczane, podobnie jak gałęzie w instrukcji if
.
Na przykład w wyrażeniu a == b ? C(qs) | D(qs)
, jeśli a
równa się b
, wywoływana C
jest wywoływana. W przeciwnym razie D
jest wywoływana.
Typy ifTrue
i wyrażenie ifFalse
muszą mieć typ typ podstawowy. Niezależnie od tego, który z nich ostatecznie daje wartość, do której oblicza wyrażenie, jego typ zawsze pasuje do określonego typu podstawowego.
Na przykład jeśli
-
Op1
jest typuQubit[] => Unit is Adj
-
Op2
jest typuQubit[] => Unit is Ctl
-
Op3
jest typuQubit[] => Unit is Adj + Ctl
następnie
-
cond ? Op1 | Op2
jest typuQubit[] => Unit
-
cond ? Op1 | Op3
jest typuQubit[] => Unit is Adj
-
cond ? Op2 | Op3
jest typuQubit[] => Unit is Ctl
Aby uzyskać więcej informacji, zobacz podtypowanie.