Compartir a través de


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 tipo Qubit[] => Unit is Adj
  • Op2 es de tipo Qubit[] => Unit is Ctl
  • Op3 es de tipo Qubit[] => Unit is Adj + Ctl

y luego

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

Para más información, consulte Subtipos.