Lua/Основы: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Форматы файлов: стилевые правки, категоризация
Метка: редактор вики-текста 2017
стилевые правки, оформление
 
Строка 2:
 
== Форматы файлов ==
Все файлы [[w:скрипт|скриптов]] на Lua имеют [[w:Расширение имени файла|расширение]] .lua, например, hello.lua - будет скриптом .lua
 
Если мы захотим запустить наш скрипт, то в [[w:Эмулятор терминала|терминале]] надо ввести:<syntaxhighlight lang="bash">
lua hello.lua
</syntaxhighlight>
 
== "Привет мир" ==
Если Lua - ваш первый язык программирования, то мы вас познакомим с традицией: всегда первая ваша программа - это вывод фразы "[[w:Hello, world!|Привет мир]]" ("Hello world") в терминал. В языке Lua это будет выглядеть так:<syntaxhighlight lang="lua">
print("Hello World") --> "Hello World"
</syntaxhighlight>Предположим, что вы это написали в файле hello.lua. Запустите этот файл при помощи команды в терминале:<syntaxhighlight lang="bash">
lua hello.lua
</syntaxhighlight>В терминале будет выведено "Hello World".
 
== Переменные ==
 
=== Создаем переменные ===
Фундаментальным понятием в любом языке программировании является [[w:Переменная (программирование)|переменная]]. Переменная - это область памяти, которая содержит в себе один объект. Если провести аналогию, то переменная - это коробка, в которую можно положить только один объект. При этом под объектом может быть слово, цифра, и так далее. Мы попробуем создать сразу 2 переменные a и b: <syntaxhighlight lang="lua">
-- 1-ый пример
a = 1
Строка 28:
-- 4-ый пример
a = 7 b = 9
</syntaxhighlight>Как вы видите, мы смогли их создать 4-мя способами: они все дают одинаковый результат. Тем не менее, мы рекомендуем использовать 1-ый способ, так как он позволяет улучшить читаемость кода. Или хотя бы 3-ий способ - на читаемость кода такое не сильно повлияет.
 
Мы с вами рассмотрели простейшие примеры, когда переменная инициализируется (то есть, создается). А что если мы попробуем воспользоваться не созданной переменной?<syntaxhighlight lang="lua">
 
Попробуем что-нибудь сделать с ними:<syntaxhighlight lang="lua">
-- a = 1 b = 2
print(a,b) --> 1 2
</syntaxhighlight>Мы получили значения этих переменных: вытащили объект из коробки. А что если мы попробуем воспользоваться переменной, которой у нас нет?<syntaxhighlight lang="lua">
--переменная а не создана
print(a) --> nil
</syntaxhighlight>Оно выведет [[Lua/Типы данных|nil]]. Что это? Фактически, это тип данных (или для простоты: некое значение, как цифра, буква или слово), который представляет из себя "ничего" и аналогичен NULL, None в других языках.
 
Обратите внимание, что для создания переменной мы использовали = - это, так называемый, знак [[w:Присваивание|присваивания]], благодаря которому происходит операция присваивания. Как я уже говорил ранее, присваивать переменной можно только один объект, будь то число или строка, но только один. Тем не менее, можно использовать, так называемое, множественное присваивание - присвоить двум переменным два значения: <syntaxhighlight lang="lua">
a,b = 1,2 --> то же самое, что a = 1, b = 2
x,y,z = 12,15
print(x,y,z) --> 12,15,nil
</syntaxhighlight>ВКак мы видим, в случае, если вы не присвоили какое-либо значение переменной, то ей будет присвоено значение nil. Заметьте, что этот способ не обходит правило, которое мы сформулировали ранее: присвоить переменной можно только один объект.
 
Можно проделать и такой трюк:<syntaxhighlight lang="lua">
Строка 45 ⟶ 50 :
a,b = b,a
print(a,b) --> 4,5
</syntaxhighlight>Здесь, произошел обмен значениями: a себе забрала значение b, а b - значение a.
</syntaxhighlight>Присваивать можно одной переменной можно разные значения, при этом, у старое значение переменной будет удалено сборщиком мусора:<syntaxhighlight lang="lua">
 
</syntaxhighlight>ПрисваиватьПеременной можно однойприсваивать переменнойновое можно разные значениязначение, при этом, у старое значение переменной будет удалено сборщиком мусора:<syntaxhighlight lang="lua">
a = 5
print(a) --> 5
Строка 53 ⟶ 60 :
 
=== Виды переменных ===
В Lua существует два типа переменных - глобальные и локальные. С глобальными переменными вы можете работать в любом месте кода, с локальными же - только в том, блоке, где она была создана. Блок - часть кода содержащееся в какой-то [[Lua/Конструкции языка|конструкции]] (например, условном выражении) или функции. Например, воспользуемся итератором:<syntaxhighlight lang="lua">
for i = 1,50 do
local x = i^2 -- локальная переменная х только в итераторе