Программирование: Основы 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.А пока что все.


Views: 2 691

» Лучшие комментарии


alexprey #1 - 6 years ago 0
Голосов: +0 / -0
Все конечно интересно, но немного поверхностно. Может было бы не плохо написать продолжение статейки углубившись в синтаксис и особенности языка? Или м.б. стоит доработать эту статью?
По крайней мере остались такие вопросы, как:
  • Что дает локальная переменая в примере выше, чем определяется область их действия?
  • Типизация: строгая (как в java) или нет (как в js или php)
  • Другие конструкции языка: циклы(for, foreach, while, do-while), выборка (switch)
  • Операторы
DasBro #3 - 6 years ago 5
Голосов: +5 / -0
alexprey:
Все конечно интересно, но немного поверхностно. Может было бы не плохо написать продолжение статейки углубившись в синтаксис и особенности языка? Или м.б. стоит доработать эту статью?
По крайней мере остались такие вопросы, как:
  • Что дает локальная переменая в примере выше, чем определяется область их действия?
  • Типизация: строгая (как в java) или нет (как в js или php)
  • Другие конструкции языка: циклы(for, foreach, while, do-while), выборка (switch)
  • Операторы
Здравствуйте,я полностью согласен с тем,что статья вышла поверхностная, скорее всего будет вторая статья,в которой я расскажу более подробно о том,что упустил. А на счет ваших вопросов 1.Область видимости локальной переменной начинается после объявления и продолжается до конца блока(К примеру тот же цикл while). 2.Lua с динамической типизацией (переменные получают типы «на лету» в зависимости от присвоенных значений). Если сравнивать с другими ЯП,то больше подойдет наверное PHP.
Rork #5 - 6 years ago 0
Голосов: +0 / -0
Я думаю сейчас тем кто роботал на С/С++/C# , будет тяжело переходить на новый язык, ет те кто только начал програмировать будут присматриватся к етому языку
DasBro #6 - 6 years ago 0
Голосов: +0 / -0
Rork, Наоборот даже проще будет. Я лично знаю C#,Lua,Python и при изучении Lua у меня не возникало никаких проблем. Так же и начинающим будет проще
Praytic #7 - 6 years ago 0
Голосов: +0 / -0
DasBro, а у вас есть какие-нибудь полезные ресурсы, по которым вы изучали lua? Если так, то можно ссылочку? (так сказать, полезный дополнительный материал к вашим урокам)
DasBro #8 - 6 years ago 0
Голосов: +0 / -0
Praytic, Вот здесь tylerneylon.com/a/learn-lua можно почитать