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.