Udostępnij za pośrednictwem


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ść , truewyraż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 bjest wywołana funkcja wywoływana C . D W przeciwnym razie wywoływana jest wartość .

Typy wyrażeń ifTrueifFalse 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 typu Qubit[] => Unit is Adj
  • Op2 jest typu Qubit[] => Unit is Ctl
  • Op3 jest typu Qubit[] => Unit is Adj + Ctl

to

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

Aby uzyskać więcej informacji, zobacz podtypowanie.