Expresiones condicionales
Las expresiones condicionales constan de tres subexpresiones, donde la subexpresión más a la izquierda es de tipo Bool
y determina cuál de las otras dos subexpresiones se evalúa. Su forma es la siguiente
cond ? ifTrue | ifFalse
Específicamente, si cond
se evalúa como true
, la expresión condicional evalúa las expresiones ifTrue
, y en caso contrario, evalúa la expresión ifFalse
. La otra expresión (la expresión ifFalse
y ifTrue
, respectivamente) nunca se evalúa, como ocurre con las ramas de una instrucción if
.
Por ejemplo, en una expresión a == b ? C(qs) | D(qs)
, si a
es igual a b
, se invoca a C
. De lo contrario, se invoca a D
.
Los tipos de la expresión ifTrue
e ifFalse
tienen que tener un tipo base común. Independientemente de cuál de los dos produzca finalmente el valor al que se evalúa la expresión, su tipo siempre coincidirá con el tipo base determinado.
Por ejemplo, si
-
Op1
es de tipoQubit[] => Unit is Adj
-
Op2
es de tipoQubit[] => Unit is Ctl
-
Op3
es de tipoQubit[] => Unit is Adj + Ctl
y luego
-
cond ? Op1 | Op2
es de tipoQubit[] => Unit
-
cond ? Op1 | Op3
es de tipoQubit[] => Unit is Adj
-
cond ? Op2 | Op3
es de tipoQubit[] => Unit is Ctl
Para más información, consulte Subtipos.