Espressioni comparative
Confronti di uguaglianza
confronti di uguaglianza (==
) e confronti di disuguaglianza (!=
) sono attualmente limitati ai tipi di dati seguenti: Int
, BigInt
, Double
, String
, Bool
, Result
, Pauli
e Qubit
. I confronti di uguaglianza dei tipi di struct
e dei chiamabili non sono attualmente supportati.
Confronto di uguaglianza per i valori di tipo Qubit
valuta se le due espressioni identificano lo stesso qubit. Non esiste alcuna nozione di stato quantistico in Q#; il confronto di uguaglianza, in particolare, non l'accesso, la misura o la modifica dello stato quantistico dei qubit.
I confronti di uguaglianza per i valori Double
possono essere fuorvianti a causa di effetti di arrotondamento.
Ad esempio, il confronto seguente restituisce false
a causa di errori di arrotondamento: 49.0 * (1.0/49.0) == 1.0
.
Il confronto di uguaglianza tra matrici e tuple è supportato dai confronti dei relativi elementi e è supportato solo se tutti i tipi annidati supportano il confronto di uguaglianza.
È supportato il confronto di uguaglianza degli intervalli chiusi e due intervalli vengono considerati uguali se producono la stessa sequenza di interi. Ad esempio, i due intervalli seguenti
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
sono considerati uguali. Il confronto di uguaglianza degli intervalli aperti non è supportato.
Confronto quantitativo
Gli operatori meno di (<
), minore o uguale a (<=
), maggiore di (>
) e maggiore o uguale a (>=
) definiscono confronti quantitativi. Possono essere applicati solo ai tipi di dati che supportano tali confronti, ovvero gli stessi tipi di dati che possono supportare anche espressioni aritmetiche.