Partilhar via


Expressões condicionais

As expressões condicionais consistem em três subexpressões, em que a sub-expressão mais à esquerda é do tipo Bool e determina qual das outras duas subexpressões é avaliada. São da forma

cond ? ifTrue | ifFalse

Especificamente, se cond for avaliada como true, a expressão condicional é avaliada para a ifTrue expressão; caso contrário, avalia para a ifFalse expressão. A outra expressão (a ifFalse expressão e ifTrue , respetivamente) nunca é avaliada, tal como os ramos numa if instrução. Por exemplo, numa expressão a == b ? C(qs) | D(qs), se a for igual ba , o callable C é invocado. Caso contrário, D é invocado.

Os tipos de ifTrue e da ifFalse expressão têm de ter um tipo de base comum. Independentemente do valor que, em última análise, gera o valor ao qual a expressão é avaliada, o tipo corresponde sempre ao tipo de base determinado.

Por exemplo, se

  • Op1 é do tipo Qubit[] => Unit is Adj
  • Op2 é do tipo Qubit[] => Unit is Ctl
  • Op3 é do tipo Qubit[] => Unit is Adj + Ctl

então

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

Para obter mais detalhes, veja subtipagem.