Partager via


Expressions conditionnelles

Les expressions conditionnelles se composent de trois sous-expressions, la plus à gauche étant de type Bool et déterminant laquelle des deux autres est évaluée. Elles sont au format

cond ? ifTrue | ifFalse

En particulier, si cond a la valeur true, l’expression conditionnelle a la valeur de l’expression ifTrue. Dans le cas contraire, elle a la valeur de l’expression ifFalse. L’autre expression (respectivement ifFalse ou ifTrue) n’est jamais évaluée, à l’instar des branches d’une instruction if. Par exemple, dans une expression a == b ? C(qs) | D(qs), si a est égal à b, le callable C est appelé. Sinon, D est appelé.

Les types des expressions ifTrue et ifFalse présentent un type de base commun. Indépendamment de celui qui génère finalement la valeur à laquelle l’expression est évaluée, son type correspond toujours au type de base déterminé.

Par exemple, si

  • Op1 est de type Qubit[] => Unit is Adj
  • Op2 est de type Qubit[] => Unit is Ctl
  • Op3 est de type Qubit[] => Unit is Adj + Ctl

, puis

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

Pour plus d’informations, consultez Sous-typage.