Основы Lua.
Всем привет! Сегодня я хотел бы вам рассказать о интересном языке программирования,о Lua .Расскажу собственно о самом языке и изучим основы программирования,а в дальнейшем напишем простую игру на нем,используя фреймворк под названием Love2D .
О Lua
Скриптовый язык программирования, разработанный в подразделении Tecgraf. Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям и реализации, язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования, включая множественное наследование, легко реализуются с использованием метатаблиц, которые также отвечают за перегрузку операций и т. п. Реализуемая модель объектно-ориентированного программирования — прототипная (как и в JavaScript).
Основы Lua
Лично я для такого дела скачаю IDE под названием ZeroBrane Studio и во всех статьях буду писать,используя данную среду. Итак. Синтаксис данного языка очень прост и в каком-то плане похож на Python,однако это совершенно разные языки программирования. Пожалуй начнем с объявления переменных:
--Это комментарий numberI = 10 --Целочисленная переменная numberF = 5.5 --Переменная с плавающей точкой stringS = 'Hello,World!' --Переменная,содержащая символы wat = nil --Неопределенная переменная(Может хранить число или символы) myArray = {numberI,numberF} --Массив с двумя элементами local localVar = 12 --Локальная переменная print(stringS) --Вывод в консоль
Все довольно просто.Теперь разберемся по подробнее с некоторыми переменными. Локальная переменная localVar в примере объявлена не совсем правильно. По стандарту, локальные переменные должны находится в теле какой-то конструкции или функции,в общем не должны быть на ряду с другими переменными. Локальные переменные,как правило,предназначены для работы только внутри какой либо функции,к примеру в теле цикла. Массив myArray объявлен правильно,однако хочу предупредить что индекс первого элемента начинается не с 0 ,а с 1 .
Теперь разберемся с конструкциями if else и циклами while и for. Вот пример If конструкции:
--IF конструкция number = 5 if number == 5 then --Если переменная равна пяти,то... print("Number: " .. number) --Выведет слово + число else --Иначе print("Error") end --Конец if конструкции
Хочу заметить что оператор сложения не + , а .. . А вот циклы:
--Циклы While и For number = 0 while number < 10 do --Пока переменная меньше 10-ти... number = number + 1 --Складываем print(number) --Выводим end for number = 9,19 do --Выполнять цикл,пока не достигнет >19 number = number + 1 print(number) end
Примечание: Нельзя складывать переменную вот так: number + 1. Необходимо присваивать значение обязательно т.е. number = number + 1.
Теперь о таблицах. На самом деле массив,который мы создавали в самом начале-это таблица(по крайней мере ее так принято называть).Вот пример:
--Таблицы myTable = {} --Разряженный массив (у которого есть не все элементы) myTable["Value 1"] = 1 --Элемент Value 1 со значением 1 myTable["Value 256"] = 256 --Элемент Value 256 со значением 256 myTable["Str"] = "Hi" print(myTable["Value 1"]) --Выведет 1 print(myTable["Str"]) --Выведет Hi
Таблица — это очень изящная структура данных, она сочетает в себе свойства массива, хэш-таблицы («ключ»-«значение»), структуры, объекта.
Теперь функции,пишутся они так:
--Функции a = function(x) return x * 2 end -- функция, умножающая на 2 function(x) return x + 1 end -- функция, увеличивающая на 1
Функции языка позволяют принимать несколько аргументов, и возвращать несколько аргументов. Так аргументы, значения которых не указаны явно, считаются равными nil.
Итак. В этой статье я рассказал о самых,самых основах Lua. Далее я напишу серию статей о создании собственной игры на Lua.А пока что все.
Смотрите также:
Комментарии
Все конечно интересно, но немного поверхностно. Может было бы не плохо написать продолжение статейки углубившись в синтаксис и особенности языка? Или м.б. стоит доработать эту статью?
По крайней мере остались такие вопросы, как:
- Что дает локальная переменая в примере выше, чем определяется область их действия?
- Типизация: строгая (как в java) или нет (как в js или php)
- Другие конструкции языка: циклы(for, foreach, while, do-while), выборка (switch)
- Операторы
Все конечно интересно, но немного поверхностно. Может было бы не плохо написать продолжение статейки углубившись в синтаксис и особенности языка? Или м.б. стоит доработать эту статью?
По крайней мере остались такие вопросы, как:
- Что дает локальная переменая в примере выше, чем определяется область их действия?
- Типизация: строгая (как в java) или нет (как в js или php)
- Другие конструкции языка: циклы(for, foreach, while, do-while), выборка (switch)
- Операторы
Здравствуйте,я полностью согласен с тем,что статья вышла поверхностная, скорее всего будет вторая статья,в которой я расскажу более подробно о том,что упустил. А на счет ваших вопросов 1.Область видимости локальной переменной начинается после объявления и продолжается до конца блока(К примеру тот же цикл while). 2.Lua с динамической типизацией (переменные получают типы «на лету» в зависимости от присвоенных значений). Если сравнивать с другими ЯП,то больше подойдет наверное PHP.
Я думаю сейчас тем кто роботал на С/С++/C# , будет тяжело переходить на новый язык, ет те кто только начал програмировать будут присматриватся к етому языку
Rork, Наоборот даже проще будет. Я лично знаю C#,Lua,Python и при изучении Lua у меня не возникало никаких проблем. Так же и начинающим будет проще
DasBro, а у вас есть какие-нибудь полезные ресурсы, по которым вы изучали lua? Если так, то можно ссылочку? (так сказать, полезный дополнительный материал к вашим урокам)
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]