Voorwaardelijke expressies
Voorwaardelijke expressies bestaan uit drie subexpressies, waarbij de meest linkse subexpressie van het type Bool
is en bepaalt welke van de twee andere subexpressies wordt geëvalueerd. Ze zijn van de vorm
cond ? ifTrue | ifFalse
cond
Als wordt geëvalueerd naar true
, evalueert de voorwaardelijke expressie naar de ifTrue
expressie; anders wordt de ifFalse
expressie geëvalueerd. De andere expressie (respectievelijk de ifFalse
expressie en ifTrue
) wordt nooit geëvalueerd, net zoals de vertakkingen in een if
-instructie.
Als in een expressie a == b ? C(qs) | D(qs)
bijvoorbeeld gelijk a
is aan b
, wordt het aanroepbare C
aangeroepen. Anders wordt D
aangeroepen.
De typen van de ifTrue
en de ifFalse
expressie moeten een gemeenschappelijk basistype hebben. Onafhankelijk van welke uiteindelijk de waarde oplevert waarop de expressie wordt geëvalueerd, komt het type altijd overeen met het bepaalde basistype.
Bijvoorbeeld als
-
Op1
is van het typeQubit[] => Unit is Adj
-
Op2
is van het typeQubit[] => Unit is Ctl
-
Op3
is van het typeQubit[] => Unit is Adj + Ctl
dan
-
cond ? Op1 | Op2
is van het typeQubit[] => Unit
-
cond ? Op1 | Op3
is van het typeQubit[] => Unit is Adj
-
cond ? Op2 | Op3
is van het typeQubit[] => Unit is Ctl
Zie subtype voor meer informatie.