Freigeben über


Bedingte Ausdrücke

Bedingte Ausdrücke bestehen aus drei Unterausdrücken, wobei der am weitesten link stehende Unterausdruck vom Typ Bool ist und bestimmt, welcher der beiden anderen Unterausdrücke ausgewertet wird. Sie haben folgende Form

cond ? ifTrue | ifFalse

Wenn cond als true ausgewertet wird, wird der bedingte Ausdruck als ifTrue-Ausdruck ausgewertet. Andernfalls ergibt die Auswertung den ifFalse-Ausdruck. Der andere Ausdruck (der ifFalse-Ausdruck bzw. der ifTrue-Ausdruck) wird nie ausgewertet, ähnlich wie bei den Verzweigungen in einer if-Anweisung. Wenn beispielsweise in einem a == b ? C(qs) | D(qs)-Ausdruck a gleich b ist, wird die aufrufbare Komponente C aufgerufen. Andernfalls wird D aufgerufen.

Die Typen des ifTrue- und des ifFalse-Ausdrucks müssen einen gemeinsamen Basistyp aufweisen. Unabhängig davon, welcher letztendlich den Wert ergibt, als der der Ausdruck ausgewertet wird, entspricht sein Typ immer dem ermittelten Basistyp.

Beispiel: Wenn

  • Op1 ist vom Typ Qubit[] => Unit is Adj
  • Op2 ist vom Typ Qubit[] => Unit is Ctl
  • Op3 ist vom Typ Qubit[] => Unit is Adj + Ctl

Erforderliche Vorgehensweise

  • cond ? Op1 | Op2 ist vom Typ Qubit[] => Unit
  • cond ? Op1 | Op3 ist vom Typ Qubit[] => Unit is Adj
  • cond ? Op2 | Op3 ist vom Typ Qubit[] => Unit is Ctl

Ausführlichere Informationen finden Sie unter Untertypisierung und Varianz.