Lua.Основы.Примеры

Lua.Основы.Примеры

Senior Pomidor

В продолжение к предыдущей статье посвещённой основам Lua, добавляю примеры операций над переменными, типов данных, операторов.


Комментарии:

Однострочный комментарий

-- Комментарий

Многострочный комментарий

--[[ 
Комментариев 
много не бывает 
]]


Типы данных:

nil (неопределенный)

  var = nil  -- переменная var освободилась

boolean (логический)

  boolTrue = true  -- переменная имеет значение true (очевидненько =))
  boolFalse = false  -- переменная имеет значение false (не менее очевидно =))

number (числовой)

  number1 = 12412.124
  number2 = 7

string (строковый)

  text = "Привет!"

function (функция)

  function add(a, b) 
    return a + b
  end

userdata (пользовательские данные)

  -- [[ по сути, не особо важный тип данных(с точки зрения ЯП Lua), так как используется для хранения данных "чужих" компонентов программ при встраивании ]]

thread (поток)

  var = coroutine.create(var) -- теперь переменная var сопрограмма

table (таблица)

 sometable = { ["name1"] = значение1; ["name2"] = значение2; ["name3"] = значение3 <...> }

Пример:

  a = {} -- пустая таблица
  a["hello"] = true           -- присвоение значений таблице a
  a["world"] = false
  a[true] = 1
  a = {                       -- или так
    hello = 123,
    world = 456
  }


Операции над переменными:

Присваивание

 <имя переменной> = <значение>         -- объявление глобальной переменной
 local <имя переменной> = <значение>   -- объявление локальной переменной

Пример:

x = 10
local y = 20

x, y = y, x                    -- возможно параллельное присваивание

Арифметические

x + y                          -- сложение
x - y                          -- вычитание
x * y                          -- умножение
x / y                          -- деление
x % 2                          -- остаток от деления
y ^ 2                          -- возведение в степень

Логические

                               -- Логическое отрицание
 print(not true)                 --  выведет false
 print(not false)                --  выведет true
                               -- Логическое И
 print(true and true)            --  выведет true
 print(false and true)           --  выведет false
 print(true and false)           --  выведет false
 print(false and false)          --  выведет false
                               -- Логическое ИЛИ
 print(true or true)             --  выведет true
 print(false or true)            --  выведет true
 print(true or false)            --  выведет true
 print(false or false)           --  выведет false

Сравнение

 a = 1
 b = 2
 print(a == b)                   --  равенство, выведет false
 print(a ~= b)                   --  неравенство, выведет true
 print(a > b)                    --  больше, выведет false
 print(a < b)                    --  меньше, выведет true
 print(a >= b)                   --  больше или равно, выведет false
 print(a <= b)                   --  меньше или равно, выведет true

Конкатенация строк

 text1 = "Привет,"
 text2 = " мир!"
 text = text1 .. text2          -- присвоить значение переменной text - 'Привет, мир!'

Длина/размер

 local foo = {}
 foo[1] = 15
 foo[2] = 55
 print(#foo)                     -- выведет размер таблицы


Операторы языка:

Условные операторы

 if <условие> then
   <последовательность команд, которая будет выполнена при выполнении условия>
 end
---------------------------------------------------------------------
 if <условие> then
   <последовательность команд, которая будет выполнена при выполнении условия>
 else
   <последовательность команд, которая будет выполнена, если условие не выполнено>
 end
---------------------------------------------------------------------
 if <условие 1> then
   <последовательность команд, которая будет выполнена при выполнении условия 1>
 elseif <условие 2> then
   <последовательность команд, которая будет выполнена, если прошлые условия не выполнены, и  при выполнении условия 2>
   ...
 elseif <условие n> then
   <последовательность команд, которая будет выполнена, если прошлые условия не выполнены, при выполнении условия n>
 else
   <последовательность команд, которая будет выполнена, если ни одно условие не выполнено>
 end

Пример:

 number = InputNumber()
 if number > 10 then
   message("Число больше 10")
 elseif number == 3 then
   message("Число равно 3")
 else
   message("Число меньше 11 и не равно 3")
 end

Цикл со счетчиком

 for <переменная-счётчик> = <начало цикла>, <конец цикла>, <шаг> do
   <цепочка действий, повторяемых для всех значений переменной-счётчика из указанного диапазона> 
 end

Пример:

 for i = 1, 10, 2 do
   print(i)         -- Выведет все нечётные числа 1, 3, 5, 7, 9  
 end

Цикл с предусловием

 while <условие> do
   <цепочка действий, которая может быть не выполнена ни разу, выполняется, только если выполнено условие выше> 
 end

Пример:

a = 5
while a > 0 do   -- организовали цикл со счетчиком
  a = a - 1
end

Цикл с постусловием

 repeat
   <цепочка действий, которая будет выполнена хотя бы 1 раз, а если выполнится условие после until, то будет повторено> 
 until <условие продолжения>

Пример:

 b = 0
 repeat
   print("Введите число > 0")
   b = input()  -- пользователь вводит число
 until (b < 1)  -- повторяем, если введено не положительное число

Report Page