Compartilhar via


Expressões comparativas

Comparações de igualdade

No momento, as comparações de igualdade (==) e as comparações de desigualdade (!=) são limitadas aos seguintes tipos de dados: Int, BigInt, Double, String, Bool, Result, Pauli e Qubit. Atualmente, não há suporte para comparações de igualdade de tipos definidos pelo usuário e callables.

A comparação de igualdade para valores do tipo Qubit avalia se as duas expressões identificam o mesmo qubit. Não há nenhuma noção de estado quântico em Q#. A comparação de igualdade especificamente não acessa, mede nem modifica o estado quântico dos qubits.

A comparação de igualdade para valores Double pode ser enganosa devido a efeitos de arredondamento. Por exemplo, a comparação a seguir é avaliada como false devido a erros de arredondamento: 49.0 * (1.0/49.0) == 1.0.

A comparação de igualdade de matrizes e tuplas é compatível com comparações de seus itens e só têm suporte se todos os seus tipos aninhados derem suporte à comparação de igualdade.

Há suporte para a comparação de igualdade de intervalos fechados e dois intervalos são considerados iguais se produzirem a mesma sequência de inteiros. Por exemplo, os dois intervalos a seguir

    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. Não há suporte para a comparação de igualdade de intervalos abertos.

Comparação quantitativa

Os operadores inferior a (<), inferior ou igual a (<=), superior a (>) e superior ou igual a (>=) definem comparações quantitativas. Eles só podem ser aplicados a tipos de dados compatíveis com essas comparações, ou seja, os mesmos tipos de dados que também são compatíveis com expressões aritméticas.