Condividi tramite


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, Paulie 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.