Lua - переменные

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

Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Буквы верхнего и нижнего регистра различны, потому что Lua чувствителен к регистру. В Lua есть восемь основных типов значений:

В Lua, хотя у нас нет типов данных переменных, у нас есть три типа в зависимости от области видимости переменной.

  • Global variables - Все переменные считаются глобальными, если явно не объявлены как локальные.

  • Local variables - Когда тип указан как локальный для переменной, его область действия ограничивается функциями внутри их области видимости.

  • Table fields - Это особый тип переменных, которые могут содержать все, кроме nil, включая функции.

Определение переменной в Lua

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

type variable_list;

Вот, 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. В приведенном выше примереlocal 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 относится к значению данных, которое хранится по некоторому адресу в памяти. Rvalue - это выражение, которому не может быть присвоено значение, что означает, что rvalue может отображаться справа, но не слева от присваивания.

Переменные - это lvalue, поэтому они могут появляться в левой части присваивания. Числовые литералы являются r-значениями, поэтому не могут быть присвоены и не могут отображаться в левой части. Ниже приводится действительное заявление -

g = 20

Но следующее утверждение не является допустимым и приведет к ошибке времени сборки:

10 = 20

В языке программирования Lua, помимо вышеперечисленных типов присваивания, можно иметь несколько lvalue и rvalue в одном и том же операторе. Это показано ниже.

g,l = 20,30

В приведенном выше утверждении 20 присваивается g, а 30 - l.