条件式
条件式は、3 つのサブ式で構成されています。この場合、左端のサブ式が Bool
型であり、他の 2 つのサブ式のどちらが評価されるかを決定します。 これらの形式は次のとおりです。
cond ? ifTrue | ifFalse
具体的には、cond
が true
に評価された場合、条件式は ifTrue
式に評価され、そうでない場合は ifFalse
式に評価されます。 もう一方の式 (それぞれ ifFalse
式と ifTrue
式) は、if
ステートメント内の分岐の場合と同様に、評価されません。
たとえば、式 a == b ? C(qs) | D(qs)
で、a
が b
に等しい場合、呼び出し可能な C
が呼び出されます。 そうでない場合は D
が呼び出されます。
ifTrue
と ifFalse
式の型には、共通の基本型が必要です。 式の評価結果の値を最終的にどちらが生成するかとは関係なく、その型は常に、決定された基本型と一致します。
たとえば、次の場合があるとします。
-
Op1
がQubit[] => Unit is Adj
型である -
Op2
がQubit[] => Unit is Ctl
型である -
Op3
がQubit[] => Unit is Adj + Ctl
型である
と
-
cond ? Op1 | Op2
がQubit[] => Unit
型である -
cond ? Op1 | Op3
がQubit[] => Unit is Adj
型である -
cond ? Op2 | Op3
がQubit[] => Unit is Ctl
型である
詳細については、サブタイプに関するセクションを参照してください。