Delen via


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 type Qubit[] => Unit is Adj
  • Op2 is van het type Qubit[] => Unit is Ctl
  • Op3 is van het type Qubit[] => Unit is Adj + Ctl

dan

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

Zie subtype voor meer informatie.