Поделиться через


Выражения сравнения

Сравнения на равенство

Сравнения на равенство (==) и неравенство (!=) в настоящее время ограничены следующими типами данных: Int, BigInt, Double, String, Bool, Result, Pauli и Qubit. Сравнение на равенство определяемых пользователем типов и вызываемых объектов в настоящее время не поддерживается.

Сравнение значений типа Qubit на равенство определяет, описывают ли два выражения один и тот же кубит. Понятие квантового состояния в Q# отсутствует. В частности, сравнение на равенство не измеряет, изменяет квантовое состояние кубит и не получает к нему доступ.

Сравнение значений Double на равенство может приводить к неверному результату из-за округления. Например, следующее сравнение дает результат false из-за ошибок округления: 49.0 * (1.0/49.0) == 1.0.

Сравнение массивов и кортежей на равенство поддерживается сравнением их элементов и поддерживается только в том случае, если все вложенные типы поддерживают сравнение на равенство.

Сравнение на равенство для близких диапазонов поддерживается, и два диапазона считаются равными, если они создают одинаковую последовательность целых чисел. Например, следующие два диапазона

    let r1 = 0..2..5; // generates the sequence 0,2,4
    let r2 = 0..2..4; // generates the sequence 0,2,4

считаются равными. Сравнение открытых диапазонов на равенство не поддерживается.

Количественное сравнение

Операторы меньше чем (<), меньше или равно (<=), больше чем (>) и больше или равно (>=) выполняют количественное сравнение. Они могут применяться только к типам данных, поддерживающим такое сравнение. Это те же типы данных, которые поддерживают арифметические выражения.