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


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

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

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

Сравнение равенства для значений типа 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

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

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

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