Раздел: CronosPRO Дата редакции: 10.07.2013 id статьи: 1515

Операции, применяемые в Lua

В выражениях, написанных на Lua, могут применяться следующие виды операций:
  • Арифметические операции.

    Lua поддерживает следующие арифметические операции:

    • + (сложение);
    • - (вычитание);
    • * (умножение);
    • / (деление);
    • ^ (возведение в степень);
    • % (остаток от деления).

    Обратите внимание

    • Арифметические операции применимы как к числам, так и к строкам, которые в этом случае преобразуются в числа.
  • Операции сравнения.

    В Lua допустимы следующие операции сравнения величин:

    • == (равно);
    • ~= (не равно);
    • < (меньше);
    • > (больше);
    • <= (меньше или равно);
    • >= (больше или равно).

    Обратите внимание

    • Операции сравнения всегда возвращают логическое значение true или false.
    • Правила преобразования чисел в строки (и наоборот) при сравнениях не работают, т. е. выражение "0" == 0 даёт в результате false.
  • Логические операции.

    К логическим операциям относятся:

    • and (логическое И).

      Операция and возвращает свой первый операнд, если он имеет значение false или nil. В противном случае, операция возвращает второй операнд (причём этот операнд может быть произвольного типа).

      a = (nil and 5) -- a равно nil
      a == (false and 5) -- a равно false
      a == (4 and 5) -- a равно 5
    • or (логическое ИЛИ).

      Операция or возвращает первый операнд, если он не false и не nil, иначе он возвращает второй операнд.

      a == (4 or 5) -- a равно 4
      a == (false or 5) -- a равно 5
    • Обратите внимание

      • Логические операции and и or могут возвращать значения любых типов.
      • Логические операции and и or вычисляют значение второго операнда только в том случае, если его нужно вернуть. Если этого не требуется, второй операнд не вычисляется. Например:
        a == (4 or f()) -- вызова функции f() не произойдет
    • not (логическое НЕ).

      Операция not всегда возвращает true или false.

  • Операция конкатенации.

    Для конкатенации (объединения) строк служит операция .. (две точки).

    a = "Кронос".."-".."Информ" -- переменная a получит значение "Кронос-Информ"

    Обратите внимание

    • Если один или оба операнда являются числами, выполняется их преобразование в строки.
      a = 0..1 -- переменная a получит значение "01"
  • Операция получения длины.

    В Lua определена операция длины #, которую можно использовать для получения длины строки.

    a = "строка" 
    len = #a -- len равно 6
    len = #"ещё строка" -- len равно 10

    Обратите внимание

Приоритет операций в Lua
В языке Lua выполнение операций осуществляется в соответствии со следующим приоритетом (в порядке убывания):
  • ^
  • not # - (унарный)
  • * / %
  • + -
  • ..
  • < > <= >= ~= ==
  • and
  • or