Отдельный набор операций представляет условные выражения. К подобным операциям относятся операции сравнения и логические операции. Такие операции возвращают логическое значение, то есть значение типа bool: true, если выражение истинно, и false, если выражение ложно.
В операциях сравнения сравниваются два операнда и возвращается true, если выражение верно, и false, если выражение неверно.
=
Сравнивает два операнда на равенство. Если они равны, то операция возвращает true, если не равны, то возвращается false:
let a = 10
let b = 4
let c = a = b
printfn $"c = {c}" // c = False
let x = 10
let y = 10
let z = x = y
printfn $"z = {z}" // c = True
Обратите внимание, что оператор равенства выглядит также, как и оператор присвоения значения.
<>
Сравнивает два операнда и возвращает true, если операнды не равны, и false, если они равны.
let a = 10
let b = 4
let c = a <> b
printfn $"c = {c}" // c = True
let x = 10
let y = 10
let z = x <> y
printfn $"z = {z}" // c = False
<
Операция "меньше чем". Возвращает true, если первый операнд меньше второго, и false, если первый операнд больше второго:
let a = 10
let b = 4
let c = a < b
printfn $"c = {c}" // c = False
let x = 10
let y = 30
let z = x < y
printfn $"z = {z}" // c = True
>
Операция "больше чем". Сравнивает два операнда и возвращает true, если первый операнд больше второго, иначе возвращает false:
let a = 10
let b = 4
let c = a > b
printfn $"c = {c}" // c = True
let x = 10
let y = 10
let z = x > y
printfn $"z = {z}" // c = False
<=
Операция "меньше или равно". Сравнивает два операнда и возвращает true, если первый операнд меньше или равен второму. Иначе возвращает false.
let a = 10
let b = 4
let c = a <= b
printfn $"c = {c}" // c = False
let x = 10
let y = 30
let z = x <= y
printfn $"z = {z}" // c = True
>=
Операция "больше или равно". Сравнивает два операнда и возвращает true, если первый операнд больше или равен второму, иначе возвращается false:
let a = 10
let b = 4
let c = a >= b
printfn $"c = {c}" // c = True
let x = 10
let y = 20
let z = x >= y
printfn $"z = {z}" // c = False
Также в F# определены логические операторы, которые также возвращают значение типа bool. В качестве операндов они принимают значения типа bool. Как правило, они объединяют несколько операций сравнения.
||
Операция логического сложения. Возвращает true, если хотя бы один из операндов возвращает true.
let x1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
let x2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
printfn $"x1 = {x1}" // x1 = True
printfn $"x2 = {x2}" // x2 = False
Оператор || выполняется по укороченной схеме (short-circuit operator), то есть если первый операнд равен true, то оценивать второй операнд (вне зависимости равен он
true или false) не имеет значения, поскольку в любом случае оператор || в этом случае возвратит true
&&
Операция логического умножения. Возвращает true, если оба операнда одновременно равны true.
let x1 = (5 > 6) && (4 < 6); // 5 > 6 - false, поэтому возвращается false
let x2 = (5 < 6) && (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true
printfn $"x1 = {x1}" // x1 = False
printfn $"x2 = {x2}" // x2 = True
Оператор && выполняется по укороченной схеме (short-circuit operator), то есть если первый операнд равен false, то оценивать второй операнд (вне зависимости равен он
true или false) не имеет значения, поскольку в любом случае оператор && в этом случае возвратит false
not
Операция логического отрицания. Производится над одним операндом и возвращает true, если операнд равен false. Если операнд равен true, то операция возвращает false:
let x = true
let z = not x
printfn $"z = {z}" // z = False
let a = false
let c = not a
printfn $"c = {c}" // c = True