Lua обучения очень проста, мы можем сначала создать программу Lua!
Программа First Lua
Интерактивное программирование
Lua обеспечивает интерактивный режим программирования. Мы можем войти в программу в командной строке и увидеть эффект сразу.
Lua интерактивный режим программирования с помощью команд или Lua Lua -i, чтобы включить его:
$ lua -i $ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio >
В командной строке введите следующую команду:
> print(«Hello World!»)
Затем нажмите клавишу ввода, вывода результатов заключаются в следующем:
> print(«Hello World!») Hello World! >
Scripted Программирование
Основы Lua
Первое, на что стоит обращать внимание в любом языке программирования — как делать комментарии.
Коментарии — это неисполняемые участки скрипта, которые могут описывать какие-то особенности функционала, присутствовать для логического разграничения, либо просто временно отменять выполнение части кода.
Для чего нужен язык Lua? Обзор языка программирования LUA.
Знание, как обозначаются комментарии, сильно упрощает чтение кода.
В Lua есть однострочные и блочные комментарии. Чтобы какая-то строка кода перестала выполняться, достаточно в начале строки добавить двойной дефис.
Переменные
Второе по важности — знать, как создавать переменные и какие типы бывают.
Если упрощенно, из типов необходимо знать про строки, числа, boolean (true, false), таблицы. При создании переменной указываем слово local. При дальнейшем использовании — не указываем.
Можно делать и множественное присвоение. Конечно, если считаете, что экономия на строках стоит ухудшения читабельности кода.
Встроенные функции
Lua, конечно же, имеет ряд полезных встроенных функций. Например, print выводит переданное значение в консоль (Output панель), type возвращает тип аргумента. tostring и tonumber — для изменения типа данных.
Встроенные функции 2
Некоторые функции добавляет Roblox:
— wait — задержка в выволнении последовательности команд. Принимает значение в секундах.
— tick — текущее время в секундах (прошедших с 1 января 1970 UTC, конечно).
Операторы
Если одинарное «равно» — оператор присваивания значения в переменную, то «двойное равно» служит для сравнения является ли левая часть равна правой. А «не равно» обозначается как ~=.
Условия
Важную роль в программировании играет обрабатывание условий. Так можно сделать либо одно действие, либо другое, в зависимости от каких-то данных.
Простейший пример. Выполним какое-то действие только «если значение переменной count равно 10», иначе просто пропустим этот участок кода.
Либо можно добавлять другие условия, а также обрабатывать случай, когда ни одно условие не выполнилось (else)
В конструкциях условий на равне с математическими знаками равенства можно использовать ключевые слова and, or, not.
Например, можно даже так сделать:
Lua in 100 Seconds
Таблицы
Стоит чуть больше остановиться на таком типе данных как таблицы. Они часто используются для переменных, содержащих набор настроек, или как массивы исходных данных.
Виды таблиц:
— массив — все элементы таблицы одного типа
— список — элементы таблицы разного типа
— словарь — элементы таблицы имеют именованные ключи (по-умолчанию, они являются индексами, числами от 1)
А вот так еще можно добавлять значения в таблицу:
Строки
Строки могут быть в двойных или одинарных ковычках. Главное чтобы они были парными.
Для склеивания строк используется «двойная точка».
Имеется синтаксис для создания многострочных текстовых переменных.
Определение длины строки:
Некоторые другие полезные методы встроенной библиотеки string:
Объявление функций
Функции — это такие наборы команд, которые можно вызывать в другом месте кода, без необходимости копировать код. Также функции могут принимать параметры для своих вычислений.
Цикл For-in
Для прохода по некоторому списку подходит цикл for-in. Данный пример выведет в консоль поочередно цифры 1, 5, 67, 3, 5.
Цикл For-do
Этот цикл принимает 3 значения через запятую: начальное знание, максимальное значение, на сколько увеличивается значение с каждым шагом (по-умолчанию равно 1 и может быть опущено). В переменную step присваивается текущее значение счетчика (1 —> 5 —> 9) и цикл продолжается, пока значение меньше или равно максимальному.
Цикл While
Цикл выполняется пока проверка (между while и do) выдаёт true.
Нередко нам нужен бесконечный цикл. Тогда вместо условия просто ставят true. Только не забудьте внутри цикла поставить задержку с wait, иначе программа просто зависнет. Я видел реализации с wait в условии проверки, это кому как нравится
Цикл Repeat
Достаточно редко встречается, т.к. все предпочитают while. Разница в том, что тело цикла выполняется до проверки условия.
Встроенные библиотеки
Есть ряд встроенных библиотек, каждая из которых даёт достаточно большие возможности: math, table, string, io, os, debug, coroutine.
Каждая из них — отдельная большая тема. Обращайтесь к документации.
Источник: robloxer.net
Почему я решил программировать на Lua?

Автор (разработчик одной из аутсорсинговых фирм) решил написать это эссе, когда просматривал почтовую рассылку по языку Lua и наткнулся на бесхитростный вопрос: «А почему язык Lua не слишком распространен?» На этот вопрос существует несколько ответов. Кто-то скажет, что в Lua недостает библиотек классов, но автору ближе другая точка зрения.
Возможно, дело в том, что не все любят решать возникающие проблемы самостоятельно. Зачастую Lua сравнивают с Arch Linux – имея при этом в виду, что Lua изначально была уготована судьба быть «языком для меньшинства». И вот несколько причин, по которым кто-то предпочитает работать именно с Lua.
Lua можно интегрировать с C/C++ Не могу сказать, что у меня большой опыт программирования, но мне доводилось работать со многими языками – в частности, с Lisp, Scheme, Python, Perl, Bash, VBA, SQL и пр. И ни один из них не работает в сочетании с языком C. Кстати, API C вполне ясен, с ним можно разобраться всего за вечер. Почему это важно?
Во-первых, если у вас есть готовая библиотека классов C/C++, то работать с этим API вам не составит труда. Кроме того, можно написать специальный скрипт, который позволит выполнять функции Lua на языке C – а это значит, что у Lua не будет проблем со скоростью.
Если вам покажется, что для решения стоящей перед вами задачи язык Lua недостаточно быстрый – можно просто переписать тот или иной код на C. Конечно, существует далеко не один язык, код которого можно переписать на C, но проще всего такие манипуляции мне удавались именно с Lua. Lua – быстрый и четкий язык По сравнению с другими языками Lua значительно эффективнее.
Возможно, это объясняется тем, что в Lua применяется виртуальная машина, основанная на регистре, а не на хранилище (storehouse). А может быть, программисты, умеющие обращаться с Lua, просто чертовски профессионально работают. Так или иначе, еще никому не приходится жаловаться на производительность кода, написанного на Lua.
Но если вы всё равно считаете, что код выполняется недостаточно быстро – можете попробовать поработать с LuaJIT. LuaJIT широко известен как динамический язык программирования, код на котором выполняется исключительно быстро. Он потребляет мало оперативной памяти: виртуальная машина требует 125 килобайт, а оперативный компилятор – всего 85 килобайт (в среде с x86-процессором).
Можно многому научиться Несмотря на то, что язык программирования – не средство обучения как таковое, я думаю, что, поработав с Lua, я действительно многому научился. Например, я прочел статью о том, как работает Lua 5.0 – и наконец разобрался в принципах работы виртуальной машины.
Функциональное программирование В Lua предоставляется фреймворк для функционального программирования, благодаря которому сам процесс программирования становится гораздо интереснее. В отличие от некоторых других языков, такие элементы, как анонимные функции, функции высшего порядка, лексические замыкания и хорошо организованные хвостовые вызовы (они же – завершающие вызовы, tail calls) – это не просто попытка «подсластить» синтаксис.
Правда, в Lua эти компоненты имеют низкоуровневую реализацию. Например, каждый метод в языке Lua представляет собой значение (например, число 2 или последовательность символов «ktr») – это означает, что все методы являются анонимными. Чтобы использовать эти методы, их нужно просто поименовать.
Допустим, можно переприсвоить print: print = math.sin Эту функцию можно использовать как «sandboxie» – средство для изоляции других функций. Например, если print – опасный процесс, его можно заменить собственным print или отменить. Все переменные – табличные В языке Lua все типы переменных являются табличными. Это касается массивов, хэшей, «модульных» или глобальных переменных и т.д.
Это означает, что можно «потребовать» определенные модули, а их результаты интерпретировать как таблицы (ситуация напоминает работу с операторами импорта в языке Python). В Python вы можете «can___import___(‘…’)» некоторые модули, а переменные с возвращаемым значением могут быть просмотрены методом, напоминающим var(module. В Lua можно просмотреть переменные модулей при помощи module[var].
Кроме того, зная Python, вы сможете быстрее изучить грамматику Lua. Даже не придется серьезно задумываться над тем, в чем заключается разница между списком и словарем или пакетом. Последовательность Возможно, вы и сами заметили: в Lua, как говорится, все сразу было сделано именно так, как надо.
Например, в Lua не было цикла FOR до версии Lua 4.0, которая вышла уже через 7 лет после появления самого языка Lua. Просто в этом языке более популярен цикл WHILE, а грамматика более лаконична. Правда, команда разработчиков Lua сравнительно консервативна, эти люди не любят писать патчи, поэтому Lua развивается не так быстро, как хотелось бы, – но зато верным путем.
Транспортируемость Я не буду подробно останавливаться на этом аспекте. Скажу только, что Lua можно использовать практически в любых средах. Код Lua компилируется в соответствии со стандартом «Clean ANSI C». Итак, если ваша операционная среда предназначена для работы с языком C, то вы можете здесь же использовать и Lua. Итак, Lua – очень простой и в то же время мощный язык. Источник
Текст: Отдел новостей Теги: c, языки программирования, lua
Нашли ошибку в тексте-выделите ее и нажмите Ctrl+Enter. Нашли ошибку в тексте-выделите ее и нажмите кнопку «Сообщить об ошибке».»
Источник: devby.io
