Sdílet prostřednictvím


Srovnávací výrazy

Porovnání rovnosti

Porovnání rovnosti (==) a porovnání nerovnosti (!=) jsou v současné době omezena na následující datové typy: Int, BigInt, Double, String, Bool, Result, , Pauli, a Qubit. Porovnání rovnosti uživatelem definovaných typů a volatelných typů se v současné době nepodporuje.

Porovnání rovnosti pro hodnoty typu Qubit vyhodnotí, jestli oba výrazy identifikují stejný qubit. V porovnání rovnosti neexistuje žádný pojem o kvantovém stavu Q#, zejména nedochází k přístupu, měření ani úpravě kvantového stavu qubitů.

Porovnání rovnosti pro Double hodnoty mohou být zavádějící z důvodu zaokrouhlování. Například následující porovnání se vyhodnotí false jako kvůli chybám zaokrouhlení: 49.0 * (1.0/49.0) == 1.0.

Porovnání rovnosti polí a řazených kolekcí členů jsou podporovány porovnáním jejich položek a jsou podporovány pouze v případě, že všechny jejich vnořené typy podporují porovnání rovnosti.

Porovnání rovnosti blízkých oblastí je podporováno a dvě oblasti se považují za stejné, pokud vytvářejí stejnou sekvenci celých čísel. Například následující dvě oblasti

    let r1 = 0..2..5; // generates the sequence 0,2,4
    let r2 = 0..2..4; // generates the sequence 0,2,4

jsou považovány za rovnocenné. Porovnání rovnosti otevřených rozsahů není podporováno.

Kvantitativní porovnání

Operátory menší než (<), menší než nebo rovno (<=), větší než (>) a větší než nebo rovno (>=) definují kvantitativní porovnání. Lze je použít pouze pro datové typy, které podporují taková porovnání, tj. stejné datové typy, které mohou také podporovat aritmetické výrazy.