Udostępnij za pośrednictwem


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

następnie

  • 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.