条件式

条件式は、3 つのサブ式で構成されています。この場合、左端のサブ式が Bool 型であり、他の 2 つのサブ式のどちらが評価されるかを決定します。 これらの形式は次のとおりです。

cond ? ifTrue | ifFalse

具体的には、condtrue に評価された場合、条件式は ifTrue 式に評価され、そうでない場合は ifFalse 式に評価されます。 もう一方の式 (それぞれ ifFalse 式と ifTrue 式) は、if ステートメント内の分岐の場合と同様に、評価されません。 たとえば、式 a == b ? C(qs) | D(qs) で、ab に等しい場合、呼び出し可能な C が呼び出されます。 そうでない場合は D が呼び出されます。

ifTrueifFalse 式の型には、共通の基本型が必要です。 式の評価結果の値を最終的にどちらが生成するかとは関係なく、その型は常に、決定された基本型と一致します。

たとえば、次の場合があるとします。

  • Op1Qubit[] => Unit is Adj 型である
  • Op2Qubit[] => Unit is Ctl 型である
  • Op3Qubit[] => Unit is Adj + Ctl 型である

  • cond ? Op1 | Op2Qubit[] => Unit 型である
  • cond ? Op1 | Op3Qubit[] => Unit is Adj 型である
  • cond ? Op2 | Op3Qubit[] => Unit is Ctl 型である

詳細については、サブタイプに関するセクションを参照してください。