Udostępnij za pośrednictwem


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, BoolStringResultDoublePauli, 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.