Переменная — это не что иное, как имя, данное области памяти, которой могут манипулировать наши программы. Он может содержать различные типы значений, включая функции и таблицы.
Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Прописные и строчные буквы различны, потому что Lua чувствителен к регистру. В Lua есть восемь основных типов ценностей:
В Lua, хотя у нас нет переменных типов данных, у нас есть три типа, основанные на области действия переменной.
-
Глобальные переменные — все переменные считаются глобальными, если они явно не объявлены как локальные.
-
Локальные переменные — когда тип указан как локальный для переменной, тогда его область действия ограничена функциями внутри их области.
-
Поля таблицы — это специальный тип переменной, который может содержать все, кроме nil, включая функции.
Глобальные переменные — все переменные считаются глобальными, если они явно не объявлены как локальные.
Локальные переменные — когда тип указан как локальный для переменной, тогда его область действия ограничена функциями внутри их области.
Поля таблицы — это специальный тип переменной, который может содержать все, кроме nil, включая функции.
Определение переменной в Lua
Определение переменной означает сообщить интерпретатору, где и сколько создать хранилище для переменной. Определение переменной имеет необязательный тип и содержит список из одной или нескольких переменных этого типа следующим образом:
type variable_list;
Здесь тип необязательно является локальным, или тип определяется как глобальный, а переменная_лист может состоять из одного или нескольких имен идентификаторов, разделенных запятыми. Некоторые действительные объявления показаны здесь —
local i, j local i local a,c
Строка local i, j объявляет и определяет переменные i и j; который указывает интерпретатору создавать переменные с именами i, j и ограничивает область видимости локальным.
Переменные могут быть инициализированы (им присвоено начальное значение) в их объявлении. Инициализатор состоит из знака равенства, за которым следует постоянное выражение:
type variable_list = value_list;
Вот некоторые примеры:
local d , f = 5 ,10 --declaration of d and f as local variables. d , f = 5, 10; --declaration of d and f as global variables. d, f = 10 --[[declaration of d and f as global variables. Here value of f is nil --]]
Для определения без инициализатора: переменные со статической продолжительностью хранения неявно инициализируются значением nil.
Объявление переменных в Lua
Как вы можете видеть в приведенных выше примерах, присваивания для кратных переменных следуют формату variable_list и value_list. В приведенном выше примере локального d, f = 5,10 у нас есть d и f в variable_list и 5 и 10 в списке значений.
Присвоение значения в Lua происходит как первая переменная в variable_list с первым значением в value_list и так далее. Следовательно, значение d равно 5, а значение f равно 10.
пример
Попробуйте следующий пример, где переменные были объявлены сверху, но они были определены и инициализированы внутри основной функции —
-- Variable definition: local a, b -- Initialization a = 10 b = 30 print("value of a:", a) print("value of b:", b) -- Swapping of variables b, a = a, b print("value of a:", a) print("value of b:", b) f = 70.0/3.0 print("value of f", f)
Когда приведенный выше код создается и выполняется, он дает следующий результат —
value of a: 10 value of b: 30 value of a: 30 value of b: 10 value of f 23.333333333333
Lvalues и Rvalues в Lua
В Lua есть два вида выражений:
-
lvalue — Выражения, которые ссылаются на ячейку памяти, называются выражением «lvalue». Lvalue может отображаться как левая или правая сторона задания.
-
rvalue — термин rvalue относится к значению данных, которое хранится по некоторому адресу в памяти. Значение r — это выражение, которому не может быть присвоено значение, что означает, что значение r может появляться в правой части, но не в левой части присваивания.
lvalue — Выражения, которые ссылаются на ячейку памяти, называются выражением «lvalue». Lvalue может отображаться как левая или правая сторона задания.
rvalue — термин rvalue относится к значению данных, которое хранится по некоторому адресу в памяти. Значение r — это выражение, которому не может быть присвоено значение, что означает, что значение r может появляться в правой части, но не в левой части присваивания.
Переменные являются lvalues и могут отображаться в левой части назначения. Числовые литералы являются r-значениями и поэтому не могут быть назначены и не могут отображаться слева. Следующее является действительным утверждением —
g = 20
Но следующее не является действительным утверждением и может привести к ошибке времени сборки —
10 = 20
В языке программирования Lua, помимо вышеупомянутых типов присваивания, можно иметь несколько значений l и r в одном и том же операторе. Это показано ниже.
g,l = 20,30
В приведенном выше утверждении 20 назначено для g и 30 назначено для l.