比較式
等価比較
"等価比較" (==
) と "不等比較" (!=
) は現在、Int
、BigInt
、Double
、String
、Bool
、Result
、Pauli
、Qubit
の各データ型に限定されています。 現在、ユーザー定義型と呼び出し可能な型の等価比較はサポートされていません。
Qubit
型の値の等価比較では、2 つの式で同じ量子ビットが特定されるかどうかが評価されます。
Q# には、量子状態という概念がありません。具体的にいうと、等価比較は、量子ビットの量子状態にアクセスしたり、それを測定したり、変更したりするものでは "ありません"。
Double
値の等価比較は、丸め効果のために不可解な結果になることがあります。
たとえば 49.0 * (1.0/49.0) == 1.0
という比較は、丸めエラーのために false
として評価されます。
配列とタプルの等値比較は、その項目の比較によってサポートされ、入れ子になった型がすべて等値比較をサポートしている場合にのみサポートされます。
終了範囲の等値比較がサポートされ、2 つの範囲が同じ整数シーケンスを生成する場合は等しいと見なされます。 たとえば、次の 2 つの範囲
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
は等しいと見なされます。 オープンエンド範囲の等値比較はサポートされていません。
定量的比較
定量的比較は、"より小さい" (<
)、"以下" (<=
)、"より大きい" (>
)、"以上" (>=
) の各演算子によって定義されます。 これらを適用できるのは、そのような比較をサポートするデータ型、つまり算術式もサポートする同じデータ型に限られます。