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 b
a , 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 tipoQubit[] => Unit is Adj
-
Op2
é do tipoQubit[] => Unit is Ctl
-
Op3
é do tipoQubit[] => Unit is Adj + Ctl
então
-
cond ? Op1 | Op2
é do tipoQubit[] => Unit
-
cond ? Op1 | Op3
é do tipoQubit[] => Unit is Adj
-
cond ? Op2 | Op3
é do tipoQubit[] => Unit is Ctl
Para obter mais detalhes, veja subtipagem.