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.