Базовый синтаксис Lua

Lua очень прост в изучении, и мы можем создать свою первую программу на Lua!

Расширение файлов кода Lua —.lua。


Первая программа на Lua

Интерактивное программирование

Lua предоставляет режим интерактивного программирования. Мы можем вводить программы в командной строке и сразу видеть результаты.

Режим интерактивного программирования Lua можно включить командой `lua -i` или `lua`:

$ lua -i 
$ Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> 

В командной строке введите следующую команду:

> print("Hello World!")

Затем нажмите Enter, и вывод будет следующим:

> print("Hello World!")
Hello World!
>

Скриптовое программирование

Мы можем сохранить код программы Lua в файл с расширением `.lua` и выполнить его. Этот режим называется скриптовым программированием. Например, мы сохраняем следующий код в файле скрипта с именем `hello.lua`:

print("Hello World!")
print("www.example.com")

Выполните приведённый выше скрипт командой `lua`, и вывод будет:

$ lua hello.lua
Hello World!
www.example.com

Мы также можем изменить код к следующему виду, чтобы выполнить скрипт (добавьте в начало: `#!/usr/local/bin/lua`):

Примеры

#!/usr/local/bin/lua

print("Hello World!")
print("www.example.com")

В приведённом выше коде мы указали интерпретатор Lua `/usr/local/bin/lua`. Добавление символа `#` сообщает интерпретатору, что его нужно игнорировать. Затем мы добавляем скрипту права на выполнение и выполняем его:

./hello.lua 
Hello World!
www.example.com

Комментарии

Однострочный комментарий

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

--

Однострочные комментарии обычно используются для кратких пояснений или пометок в коде.

Многострочный комментарий

Многострочные комментарии начинаются с--[[и заканчиваются]]подходят для случаев, когда нужно описать большой блок кода.

--[[
 Multi-line comment
 Multi-line comment
 --]]

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

--[[
This is a multi-line comment
--[[
Nested multi-line comment (this is illegal)
]]
]]

Идентификаторы

Идентификаторы Lua используются для определения переменной, функции или других определяемых пользователем элементов. Идентификатор начинается с буквы от A до Z или от a до z, либо с подчёркивания_за которым следуют ноль или более букв, подчёркиваний или цифр (0 до 9).

Лучше не использовать идентификаторы, состоящие из подчёркивания, за которым следуют заглавные буквы, потому что зарезервированные слова Lua также имеют такой вид.

Lua не допускает специальные символы, такие как@, $, и%для определения идентификаторов. Lua — язык программирования, чувствительный к регистру. Поэтому в Lua Example и example — два разных идентификатора.

Ниже перечислены некоторые правильные идентификаторы:

mohd         zara      abc     move_name    a_123
myname50     _temp     j       a23b9        retVal

Ключевые слова

Ниже перечислены зарезервированные ключевые слова Lua. Зарезервированные ключевые слова нельзя использовать как константы, переменные или другие определяемые пользователем идентификаторы:

и break do else
elseif end false for
функция if in local
nil not или repeat
return затем истина until
while goto

По общему соглашению имена, начинающиеся с подчёркивания, за которым следует строка заглавных букв (например, `_VERSION`), зарезервированы для внутренних глобальных переменных Lua.


Глобальные переменные

По умолчанию переменные всегда считаются глобальными.

Глобальные переменные не нужно объявлять. Присваивание значения переменной создаёт эту глобальную переменную. Обращение к неинициализированной глобальной переменной не вызывает ошибку; оно просто даёт результат: `nil`.

> print(b)
nil
> b=10
> print(b)
10
>

Если вы хотите удалить глобальную переменную, просто присвойте переменной `nil`.

b = nil
print(b)      --> nil

Таким образом, переменная `b` выглядит так, будто она никогда не использовалась. Иными словами, переменная существует тогда и только тогда, когда она не равна `nil`.

Другие расширения