Отдельный набор операций представляет условные выражения. К подобным операциям относятся операции сравнения и логические операции. Такие операции возвращают логическое значение, то есть значение типа 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