Podmíněné výrazy
Podmíněné výrazy se skládají ze tří dílčích výrazů, kde levý-nejvíce dílčí výraz je typu Bool
a určuje, který ze dvou dalších dílčích výrazů se vyhodnotí. Jsou ve formuláři.
cond ? ifTrue | ifFalse
Konkrétně pokud se cond
vyhodnotí jako true
, pak se podmíněný výraz vyhodnotí jako výraz ifTrue
; v opačném případě se vyhodnotí jako výraz ifFalse
. Druhý výraz (ifFalse
a výraz ifTrue
) se nikdy nevyhodnocuje, podobně jako větve v příkazu if
.
Například ve výrazu a == b ? C(qs) | D(qs)
, pokud se a
rovná b
, je vyvolána volatelná C
. V opačném případě se vyvolá D
.
Typy ifTrue
a výraz ifFalse
musí mít společný základní typ. Nezávisle na tom, který z nich nakonec získá hodnotu, na kterou se výraz vyhodnotí, jeho typ vždy odpovídá určenému základnímu typu.
Například pokud
-
Op1
je typuQubit[] => Unit is Adj
-
Op2
je typuQubit[] => Unit is Ctl
-
Op3
je typuQubit[] => Unit is Adj + Ctl
pak ...
-
cond ? Op1 | Op2
je typuQubit[] => Unit
-
cond ? Op1 | Op3
je typuQubit[] => Unit is Adj
-
cond ? Op2 | Op3
je typuQubit[] => Unit is Ctl
Další podrobnosti najdete v tématu podtypování.