Wyrażenia warunkowe
Wyrażenia warunkowe składają się z trzech wyrażeń podrzędnych, w których wyrażenie podrzędne po lewej stronie 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
daje wartość , true
wyrażenie warunkowe daje wyrażeniu wyrażeniu ifTrue
wartość . W przeciwnym razie daje ona wyrażeniu ifFalse
wartość . Drugie wyrażenie (odpowiednio ifFalse
wyrażenie 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ę , wywoływana b
jest wywołana funkcja wywoływana C
.
D
W przeciwnym razie wywoływana jest wartość .
Typy wyrażeń ifTrue
ifFalse
i muszą mieć wspólny typ podstawowy. Niezależnie od tego, który z nich ostatecznie daje wartość, do której oblicza wyrażenie, jego typ zawsze odpowiada określonemu typowi bazowemu.
Na przykład, jeśli
-
Op1
jest typuQubit[] => Unit is Adj
-
Op2
jest typuQubit[] => Unit is Ctl
-
Op3
jest typuQubit[] => Unit is Adj + Ctl
to
-
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.