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 typeQubit[] => Unit is Adj
-
Op2
est de typeQubit[] => Unit is Ctl
-
Op3
est de typeQubit[] => Unit is Adj + Ctl
, puis
-
cond ? Op1 | Op2
est de typeQubit[] => Unit
-
cond ? Op1 | Op3
est de typeQubit[] => Unit is Adj
-
cond ? Op2 | Op3
est de typeQubit[] => Unit is Ctl
Pour plus d’informations, consultez Sous-typage.