Share via


Expressões comparativas

Comparações de igualdade

As comparações de igualdade (==) e as comparações de desigualdade (!=) estão atualmente limitadas aos seguintes tipos de dados: Int, BigInt, Double, , String, Bool, Result, Paulie .Qubit Atualmente, não são suportadas comparações de igualdade de tipos e callables definidos pelo utilizador.

A comparação de igualdade para valores do tipo Qubit avalia se as duas expressões identificam o mesmo qubit. Não existe nenhuma noção de um estado quântico em Q#; a comparação da igualdade, em particular, não acede, mede nem modifica o estado quântico dos qubits.

As comparações de igualdade para Double valores podem ser enganosas devido a efeitos de arredondamento. Por exemplo, a seguinte comparação é avaliada devido a erros false de arredondamento: 49.0 * (1.0/49.0) == 1.0.

A comparação de igualdade de matrizes e cadeias de identificação é suportada por comparações dos respetivos itens e só é suportada se todos os seus tipos aninhados suportarem a comparação de igualdade.

A comparação de igualdade de intervalos fechados é suportada e dois intervalos são considerados iguais se produzirem a mesma sequência de números inteiros. Por exemplo, os dois intervalos seguintes

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

são considerados iguais. A comparação de igualdade de intervalos abertos não é suportada.

Comparação quantitativa

Os operadores menores que (<), menores ou iguais (<=), maiores do que (>) e maiores do que ou iguais (>=) definem comparações quantitativas. Só podem ser aplicados a tipos de dados que suportem tais comparações, ou seja, os mesmos tipos de dados que também podem suportar expressões aritméticas.