Sdílet prostřednictvím


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 typu Qubit[] => Unit is Adj
  • Op2 je typu Qubit[] => Unit is Ctl
  • Op3 je typu Qubit[] => Unit is Adj + Ctl

pak ...

  • cond ? Op1 | Op2 je typu Qubit[] => Unit
  • cond ? Op1 | Op3 je typu Qubit[] => Unit is Adj
  • cond ? Op2 | Op3 je typu Qubit[] => Unit is Ctl

Další podrobnosti najdete v tématu podtypování.