Espressioni condizionali
Le espressioni condizionali sono costituite da tre sottoespressione, in cui l'espressione secondaria più a sinistra è di tipo Bool
e determina quale delle due altre sottoespressione viene valutata. Hanno il formato
cond ? ifTrue | ifFalse
In particolare, se cond
restituisce true
, l'espressione condizionale restituisce l'espressione ifTrue
; in caso contrario, restituisce l'espressione ifFalse
. L'altra espressione (rispettivamente l'espressione ifFalse
e ifTrue
) non viene mai valutata, in modo analogo ai rami in un'istruzione if
.
Ad esempio, in un'espressione a == b ? C(qs) | D(qs)
, se a
è uguale b
a , viene richiamato il chiamabile C
. In caso contrario, D
viene richiamato.
I tipi di espressione ifTrue
e ifFalse
devono avere un tipo di base comune. Indipendentemente da quale restituisce infine il valore a cui viene valutata l'espressione, il tipo corrisponde sempre al tipo di base determinato.
Ad esempio: se
-
Op1
è del tipoQubit[] => Unit is Adj
-
Op2
è del tipoQubit[] => Unit is Ctl
-
Op3
è del tipoQubit[] => Unit is Adj + Ctl
allora
-
cond ? Op1 | Op2
è del tipoQubit[] => Unit
-
cond ? Op1 | Op3
è del tipoQubit[] => Unit is Adj
-
cond ? Op2 | Op3
è del tipoQubit[] => Unit is Ctl
Per altri dettagli, vedere sottotipi.