Введение в Lua. Часть 5: Функции

LÖVE

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

-- создание функции с помощью выражения function и присваивание её переменной
greet = function ()
    print("Hello")
end

-- то же самое, но с использованием инструкции, а не выражения
function greet()
    print("Hello")
end

-- эта инструкция делает то же самое, но перед созданием функции и
-- присваиванием объявляет локальную переменную с нужным именем
local function greet()
    print("Hello")
end

Читать дальше...

Введение в Lua. Часть 4: Локальные переменные

LÖVE

До сих пор при необходимости задействовать какую-либо переменную мы просто присваивали ей значение:

species = "hyena"
quantity = 3

При этом использовались так называемые глобальные переменные. Такие переменные видны отовсюду, то есть, к их значениям можно обращаться из любого места программы. Однако, например, переменная-счётчик из рассмотренного в прошлой статье числового цикла for таковой не является: её областью видимости является только блок внутри for. То есть:

for i = 1, 10 do
    print(i)
end

print(i) -- выводит nil, так как снаружи ту переменную в for не видно

Переменная, область видимости которой ограничена блоком кода, называется локальной для этого блока. Так, при использовании числового for автоматически объявляется локальная переменная-счётчик.


Читать дальше...

Введение в Lua. Часть 3: Управляющие инструкции

LÖVE

В этой части будет описано несколько важных инструкций языка Lua. Под инструкцией (statement) понимается некоторая самостоятельная часть программы, которую обычно пишут с новой строки. Например, из первой статьи читатель уже поверхностно знаком с двумя видами инструкций языка — присваиванием (=) и вызовом функции (на примере функции print).

Lua поддерживает следующие инструкции для управления потоком выполнения (иначе говоря, для изменения порядка выполнения инструкций):

  • if-else
  • while
  • repeat-until
  • numeric for
  • generic for
  • goto

В целом, они повторяют аналогичные конструкции из других языков. Особенной является только, пожалуй, generic for, но она во всей своей красе будет рассмотрена позже.


Читать дальше...

Введение в Lua. Часть 2: Таблицы

LÖVE

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

obj = {} -- создание пустой таблицы
obj["color"] = "green" -- сохранение значения "green" под ключом "color"
obj["size"] = 5
print(obj["color"]) --> "green"
obj["color"] = "turquoise" -- заменяем значение по ключу "color" на другое
print(obj["color"]) --> "turquoise"

Читать дальше...

Введение в Lua. Часть 1: Основы

LÖVE

Вот, наконец, и моя попытка написать введение в язык Lua. Я всё-таки постараюсь описать всё в меру подробно, упоминая разные полезные (с моей точки зрения) детали, на которые можно не сразу обратить внимание. Конкретно про LÖVE здесь ничего не будет, только чистый Lua. Но экспериментировать с языком, конечно, можно и запуская скрипты через LÖVE.

Ну, поехали.

Комментарии

В статье будут использоваться так называемые комментарии — последовательности символов в коде, не воспринимающиеся лексическим анализатором и использующиеся (внезапно) для комментирования кода.

В языке Lua два дефиса начинают однострочный комментарий (заканчивающийся переносом строки):

print("hello world") -- любое значение можно выводить в консоль при помощи функции print

Читать дальше...

LUA — о чем нужно знать перед первым свиданием

LÖVE

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

Я не буду залезать в справочники, а только расскажу о своем опыте общения с этой вертихвосткой. И пусть меня более опытные поправят, если я в чем-то ошибся. Писал с расчетом на программистов, к-е уже имеют опыт общения с другими языками программирования. Рассказывать что такое «переменная» и «цикл» я не хочу. И небольшими порциями, чтобы Вас и себя слишком не утомлять.


Читать дальше...