Показать страницуСсылки сюдаДобавить в книгуНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Шпаргалка Lua ====== <code> Индексация с 1! Работает везде: таблицы, строки, подстроки. </code> ===== 1. Переменные ===== <code lua> x = 10 -- глобальная local y = 20 -- локальная (быстрее, не выходит за пределы блока) -- Имена: буквы, цифры, _ . Нельзя начинать с цифры. -- nil = "пусто" </code> ===== 2. Типы данных ===== ^ Тип ^ Пример ^ | nil | ''a = nil'' | | boolean | ''true'', ''false'' | | number | ''42'', ''3.14'', ''-7'' | | string | ''"привет"'', ''"ok"'' | | table | ''{1,2,3}'' | | function | ''function() end'' | <code lua> print(type(x)) -- узнать тип </code> ===== 3. Ввод/вывод ===== <code lua> print("текст") -- с переводом строки io.write("текст") -- без перевода s = io.read() -- читаем строку n = tonumber(io.read()) -- читаем число </code> ===== 4. Условия ===== <code lua> if x > 5 then print(">5") elseif x == 5 then print("=5") else print("<5") end -- Операторы сравнения: == ~= < > <= >= -- Логические: and or not -- Короткая запись (тернарник) result = (age >= 18) and "взрослый" or "ребенок" </code> ===== 5. Циклы ===== <code lua> -- while while count < 10 do count = count + 1 end -- for (переменная = начало, конец, шаг) for i = 1, 10 do -- 1 2 3 4 5 6 7 8 9 10 for i = 1, 10, 2 do -- 1 3 5 7 9 for i = 10, 1, -1 do -- 10 9 8 ... 1 -- repeat-until (хоть один раз выполнится) repeat x = x - 1 until x == 0 -- break - выход из цикла </code> ===== 6. Таблицы (главная структура) ===== === Как массив (индексы с 1!) === <code lua> arr = {"a", "b", "c"} print(arr[1]) --> a print(#arr) --> 3 (длина) -- Добавление/удаление arr[4] = "d" table.insert(arr, "e") -- в конец table.insert(arr, 2, "x") -- на позицию 2 table.remove(arr, 2) -- удалить позицию 2 -- Перебор массива for i, v in ipairs(arr) do print(i, v) end </code> === Как словарь === <code lua> dict = {name="Иван", age=30, city="Москва"} print(dict.name) --> Иван print(dict["age"]) --> 30 -- Добавление dict.job = "программист" -- Перебор словаря for k, v in pairs(dict) do print(k .. " = " .. v) end </code> === Полезное === <code lua> -- Проверка существования ключа if dict.salary then print("есть") end -- Значение по умолчанию name = dict.name or "Гость" -- Очистка таблицы for k in pairs(t) do t[k] = nil end </code> ===== 7. Функции ===== <code lua> -- Объявление function add(a, b) return a + b end -- Локальная функция local function mul(a, b) return a * b end -- Анонимная функция square = function(x) return x * x end -- Несколько возвращаемых значений function get_min_max(t) local min, max = t[1], t[1] for i = 1, #t do if t[i] < min then min = t[i] end if t[i] > max then max = t[i] end end return min, max end a, b = get_min_max({3,1,4,1,5}) -- a=1, b=5 -- Вызов result = add(5, 3) --> 8 </code> ===== 8. Строки ===== <code lua> s = "hello" s2 = 'world' s3 = [[много строк]] -- Основные операции print(#s) --> 5 print(s .. " " .. s2) --> hello world print(string.upper(s)) --> HELLO print(string.lower(s)) --> hello print(string.sub(s, 2, 4)) --> ell (индексы с 1!) print(string.rep("hi", 3)) --> hihihi print(string.find(s, "ell")) --> 2 (позиция) -- Поиск и замена new = string.gsub("hello world", "world", "lua") --> hello lua -- Экранирование: \n \t \\ \" \' </code> ===== 9. Математика ===== <code lua> -- Случайные числа math.randomseed(os.time()) -- инициализация r = math.random() -- 0..1 r = math.random(100) -- 1..100 r = math.random(10, 20) -- 10..20 -- Округление math.floor(3.7) --> 3 math.ceil(3.2) --> 4 -- Минимум/максимум math.min(3,1,4,1,5) --> 1 math.max(3,1,4,1,5) --> 5 -- Другое math.abs(-5) --> 5 math.sqrt(9) --> 3 math.pi --> 3.1415926535898 </code> ===== 10. Операторы (полный список) ===== <file> Категория Операторы | Арифметика | ''+'' ''-'' ''*'' ''/'' ''//'' ''%'' ''^'' ''-''(унарный) | Сравнение | ''=='' ''~='' ''<'' ''>'' ''<='' ''>='' | Логика | ''and'' ''or'' ''not'' | Конкатенация | ''..'' | Длина | ''#'' | Присваивание | ''='' </file> ===== 11. Полезные паттерны ===== === Значение по умолчанию === <code lua> name = name or "Гость" </code> === Обмен значений === <code lua> a, b = b, a </code> === Проверка на nil === <code lua> if not x then print("x = nil или false") end if x == nil then print("только nil") end </code> === Однострочный if === <code lua> if x > 0 then print("positive") end </code> === Защита от глобальных переменных === <code lua> -- В начале файла setfenv(1, {}) -- изолирует (Lua 5.1) -- Или используйте 'local' везде </code> === Быстрая печать таблицы (отладка) === <code lua> function print_table(t, name) name = name or "table" print(name .. ":") for k, v in pairs(t) do print(" " .. tostring(k) .. " = " .. tostring(v)) end end </code> ===== 12. Типичные ошибки ===== * **Индексация с 0** → в Lua массивы **с 1**! * **Путаница = и ==** → ''='' присваивание, ''=='' сравнение * **Забыл then/end** → у каждого if должен быть ''then'' и ''end'' * **Забыл local** → переменные глобальные по умолчанию * **# для словаря** → работает только для массивов без дырок * **Сравнение с nil** → ''if x == nil'' работает, но ''if not x'' короче ===== 13. Комментарии ===== <code lua> -- однострочный --[[ многострочный комментарий --]] </code> ===== 14. Запуск ===== <code bash> lua script.lua # запустить скрипт lua -i script.lua # запустить с интерактивным режимом lua -e "print('hi')" # выполнить строку кода </code> ===== 15. Быстрый шаблон скрипта ===== <code lua> #!/usr/bin/env lua -- -*- coding: utf-8 -*- local function main() print("Начало работы") -- ваш код здесь print("Завершено") return 0 end if type(package) ~= "table" or package.loaded[...] ~= true then os.exit(main()) end </code> ===== 16. Полезные ссылки ===== * Документация: [[https://www.lua.org/manual/5.4/]] * Онлайн-песочница: [[https://replit.com/languages/lua]] * Книга "Programming in Lua": [[https://www.lua.org/pil/]] ---- //[[antistatus@mail.ru|Antistatus]] 15.04.2026 08:45// docs/helplua.txt Последнее изменение: 15 ч. назад — admin