Операции сравнения и логические операции

Последнее обновление: 10.12.2023

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