Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Обучение] Основы Lua.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
66.67 Кб
Скачать

И так, выучить что-то, это не просто, особенно язык, пусть и язык программирования, это дело требует упорства и желания достичь конечного результата. Скажу сразу, если вы думаете, что просто прочитав гайд, вы сразу станете программистом, то вы ошибаетесь! Прочитав гайд, вы получите лишь теоретические знания, а это только базовая часть. Что бы стать программистом, вам кроме прочтения гайдов и туториалов, нужно будет наработать опыт решения тех или иных ситуаций.

Ну да ладно, в данном кратком гайде я изложил минимум того, что вам нужно будет знать для коддинга на Lua. Так что если вам крайне в лом читать огромную базу знаний на www.lua.ru, то вот вам более сжатый материал для изучения. Но каким бы сжатым и простым этот материал не был, он в любом случае ориентирован на человека, который хоть какое-то представление имеет о программировании и знает как минимум базовую часть. Ну или хотя бы что такое «интерпретатор» или «переменная».

В данном гайде я собрал только определения и некоторые примеры, самые основные теоретические знания, во втором документе я изложу все операторы, доступные в Lua. Ну, начнём с самого простого, поехали!

Лексические соглашения

Это надо бы знать, но если вдруг вам этот раздел не очень понятен, это не страшно.

Идентификаторы могут содержать буквы, цифры и символы подчеркивания и не могут начинаться с цифры.

Идентификаторы, начинающиеся с подчеркивания и состоящие только из заглавных букв, зарезервированы для внутреннего использования интерпретатором.

В идентификаторах различается верхний и нижний регистры букв.

Строковые литералы можно заключать в одинарные или двойные кавычки. В них можно использовать следующие специальные последовательности символов:

\n перевод строки (LF = 0x0a) \a bell

\r возврат каретки (CR = 0x0d) \b backspace

\t табуляция \f form feed

\\ символ обратной косой черты \v вериткальная табуляция

\" кавычка \[ левая квадратная скобка

\' апостроф \] правая квадратная скобка

\ddd символ с кодом ddd (десятичным) \0 символ с кодом 0

Если в конце строки исходного файла стоит символ обратной косой черты, то на следующей строке может быть продолжено определение строкового литерала, в который в этом месте вставится символ новой строки.

Строковые литералы можно также заключать в двойные квадратные скобки [[....]]. В этом случае литерал может быть определен на нескольких строках (символы перевода строки включаются в строковый литерал) и в нем не интерпретируются специальные последовательности символов.

Если непосредственно после символов '[[' идет перевод строки, то он не включается в строковый литерал.

В качестве ограничителей строки кроме двойных квадратных скобок может использоваться символ [===[ .... ]===] в котором между повторяющимися квадратными скобками расположено произвольное число знаков равенства (одинаковое для открывающего и закрывающего ограничителя).

Комментарий начинается символами '--' (два минуса подряд) и продолжается до конца строки. Если непосредственно после символов '--' идут символы '[[', то комментарий является многострочным и продолжается до символов ']]'. Многострочный комментарий может содержать вложенные пары символов [[....]]. В качестве ограничителей многострочных комментариев кроме двойных квадратных скобок может также использоваться символ [===[ .... ]===] в котором между повторяющимися квадратными скобками расположено произвольное число знаков равенства (одинаковое для открывающего и закрывающего ограничителя).

Типы данных

В Lua имеются следующие типы данных:

nil пусто

boolean логический

number числовой

string строковый

function функция

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

thread поток

table ассоциативный массив

Тип nil соответствует отсутствию у переменной значения. Этому типу соответствует единственное значение nil.

Логический тип имеет два значения: true и false.

Значение nil рассматривается как false. Все остальные значения, включая число 0 и пустую строку, рассматриваются как логическое значение true.

Все числа представлены как вещественные числа двойной точности.

Строки представляют собой массивы 8-битных символов и могут содержать внутри себя символ с нулевым кодом. Все строки в Lua константные т.е. изменить содержимое существующей строки нельзя.

Функции можно присваивать переменным, передавать в функции в качестве аргумента, возвращать в качестве результата из функции и сохранять в таблицах.

Тип userdata соответствует нетипизированному указателю, по которому могут быть расположены произвольные данные. Программа на Lua не может непосредственно работать с такими данными (создавать, модифицировать их). Этому типу данных не соответствует никаких предопределенных операций кроме присваивания и сравнения на равенство. В то же время такие операции могут быть определены при помощи механизма метаметодов.

Тип thread соответствует независимо выполняемому потоку. Этот тип данных используется механизмом сопрограмм.

Тип table соответствует таблицам  —  ассоциативным массивам, которые можно индексировать любыми значениями и которые могут одновременно содержать значения произвольных типов.

Тип объекта, сохраненного в переменной можно выяснить, вызвав функцию type(). Эта функция возвращает строку, содержащую каноническое название типа: "nil", "number", "string", "boolean", "table", "function", "thread", "userdata".

Преобразования между числами и строками происходят автоматически в момент их использования в соответствующем контексте.

Арифметические операции подразумевают числовые аргументы и попытка выполнить такую операцию над строками приведет к преобразованию их в числа. Строковые операции, производимые над числами, приводят к их преобразованию в строку с помощью некоторого фиксированного форматного преобразования.

Можно также явно преобразовать объект в строку с помощью функции tostring() или в число с помощью функции tonumber(). Для большего контроля над процессом преобразования чисел в строки следует использовать функцию форматного преобразования.