Учебники

Lua — переменные

Переменная — это не что иное, как имя, данное области памяти, которой могут манипулировать наши программы. Он может содержать различные типы значений, включая функции и таблицы.

Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Прописные и строчные буквы различны, потому что 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.

пример

Попробуйте следующий пример, где переменные были объявлены сверху, но они были определены и инициализированы внутри основной функции —

Live Demo

-- 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.