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 TypQubit[] => Unit is Adj
-
Op2
ist vom TypQubit[] => Unit is Ctl
-
Op3
ist vom TypQubit[] => Unit is Adj + Ctl
Erforderliche Vorgehensweise
-
cond ? Op1 | Op2
ist vom TypQubit[] => Unit
-
cond ? Op1 | Op3
ist vom TypQubit[] => Unit is Adj
-
cond ? Op2 | Op3
ist vom TypQubit[] => Unit is Ctl
Ausführlichere Informationen finden Sie unter Untertypisierung und Varianz.