Wyrażenia porównawcze
Porównywanie równości
Porównania równości () i porównania nierówności (!=
==
) są obecnie ograniczone do następujących typów danych: Int
, , BigInt
, Bool
String
Result
Double
Pauli
, i .Qubit
Porównania równości typów zdefiniowanych przez użytkownika i elementów wywołujących nie są obecnie obsługiwane.
Porównanie równości wartości typu Qubit
ocenia, czy dwa wyrażenia identyfikują ten sam kubit. Nie ma pojęcia stanu kwantowego w Q#systemie ; porównanie równości, w szczególności, nie uzyskuje dostępu, mierzenia ani modyfikowania stanu kwantowego kubitów.
Porównania równości wartości Double
mogą być mylące z powodu efektów zaokrąglania.
Na przykład następujące porównanie daje w wyniku false
błędy zaokrąglania: 49.0 * (1.0/49.0) == 1.0
.
Porównanie równości tablic i krotek jest obsługiwane przez porównania ich elementów i są obsługiwane tylko wtedy, gdy wszystkie ich typy zagnieżdżone obsługują porównanie równości.
Obsługiwane jest porównywanie równości zakresów zamkniętych, a dwa zakresy są traktowane jako równe, jeśli tworzą tę samą sekwencję liczb całkowitych. Na przykład następujące dwa zakresy
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
są traktowane jako równe. Porównanie równości zakresów otwartych nie jest obsługiwane.
Porównanie ilościowe
Operatory mniejsze niż (<
), mniejsze niż lub równe (<=
), większe niż (>
) i większe niż lub równe (>=
) definiują porównania ilościowe. Można je stosować tylko do typów danych, które obsługują takie porównania, czyli tych samych typów danych, które mogą również obsługiwać wyrażenia arytmetyczne.