Partage via


Expressions de comparaison

Comparaisons d’égalité

Les comparaisons d’égalité (==) et les comparaisons d’inégalité (!=) sont actuellement limitées aux types de données suivants : Int, BigInt, Double, String, Bool, Result, Pauli et Qubit. Les comparaisons d’égalité des types définis par l’utilisateur et des callables ne sont actuellement pas prises en charge.

La comparaison d’égalité pour les valeurs de type Qubit évalue si les deux expressions identifient le même qubit. Il n’existe aucune notion d’état quantique dans Q#. La comparaison d’égalité, en particulier, n’accède, ne mesure et ne modifie pas l’état quantique des qubits.

Les comparaisons d’égalité des valeurs Double peuvent être trompeuses en raison des effets d’arrondi. Par exemple, la comparaison suivante prend la valeur false en raison des erreurs d’arrondi : 49.0 * (1.0/49.0) == 1.0.

La comparaison d’égalité des tableaux et des tuples est prise en charge par des comparaisons de leurs éléments, et ne sont prises en charge que si tous leurs types imbriqués prennent en charge la comparaison d’égalité.

La comparaison d’égalité des plages proches est prise en charge, et deux plages sont considérées comme égales si elles produisent la même séquence d’entiers. Par exemple, les deux plages suivantes

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

sont considérés comme égaux. La comparaison d’égalité des plages ouvertes n’est pas prise en charge.

Comparaison quantitative

Les opérateurs inférieur à (<), inférieur ou égal à (<=), supérieur à (>) et supérieur ou égal à (>=) définissent les comparaisons quantitatives. Il peuvent uniquement être appliqués aux types de données qui prennent en charge ces comparaisons, à savoir les types de données qui peuvent également prendre en charge les expressions arithmétiques.