Выражения сравнения
Сравнения на равенство
Сравнения на равенство (==
) и неравенство (!=
) в настоящее время ограничены следующими типами данных: 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
считаются равными. Сравнение открытых диапазонов на равенство не поддерживается.
Количественное сравнение
Операторы меньше чем (<
), меньше или равно (<=
), больше чем (>
) и больше или равно (>=
) выполняют количественное сравнение. Они могут применяться только к типам данных, поддерживающим такое сравнение. Это те же типы данных, которые поддерживают арифметические выражения.