Condividi tramite


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 ba , 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 tipo Qubit[] => Unit is Adj
  • Op2 è del tipo Qubit[] => Unit is Ctl
  • Op3 è del tipo Qubit[] => Unit is Adj + Ctl

allora

  • cond ? Op1 | Op2 è del tipo Qubit[] => Unit
  • cond ? Op1 | Op3 è del tipo Qubit[] => Unit is Adj
  • cond ? Op2 | Op3 è del tipo Qubit[] => Unit is Ctl

Per altri dettagli, vedere sottotipi.