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