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
, Pauli
e .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.