Lua - zmienne

Zmienna to nic innego jak nazwa nadana obszarowi pamięci, którym nasze programy mogą manipulować. Może zawierać różne typy wartości, w tym funkcje i tabele.

Nazwa zmiennej może składać się z liter, cyfr i znaku podkreślenia. Musi zaczynać się od litery lub podkreślenia. Wielkie i małe litery są różne, ponieważ Lua rozróżnia wielkość liter. W Lua istnieje osiem podstawowych typów wartości -

W Lua, chociaż nie mamy zmiennych typów danych, mamy trzy typy oparte na zakresie zmiennej.

  • Global variables - Wszystkie zmienne są uważane za globalne, chyba że zostały wyraźnie zadeklarowane jako lokalne.

  • Local variables - Gdy typ jest określony jako lokalny dla zmiennej, jej zakres jest ograniczony funkcjami wewnątrz ich zakresu.

  • Table fields - Jest to specjalny typ zmiennej, która może przechowywać wszystko oprócz nil, w tym funkcje.

Definicja zmiennej w Lua

Definicja zmiennej oznacza poinformowanie interpretera, gdzie i ile ma utworzyć pamięć dla zmiennej. Definicja zmiennej ma opcjonalny typ i zawiera listę co najmniej jednej zmiennej tego typu w następujący sposób -

type variable_list;

Tutaj, type jest opcjonalnie lokalny lub określony typ, dzięki czemu jest globalny, a variable_listmoże składać się z jednej lub więcej nazw identyfikatorów oddzielonych przecinkami. Tutaj pokazano kilka ważnych deklaracji -

local    i, j
local    i
local    a,c

Linia local i, jzarówno deklaruje, jak i definiuje zmienne i i j; co instruuje interpretera, aby utworzył zmienne o nazwach i, j i ograniczał zakres do lokalnego.

Zmienne można zainicjować (przypisać wartość początkową) w ich deklaracji. Inicjator składa się ze znaku równości, po którym następuje stałe wyrażenie w następujący sposób -

type variable_list = value_list;

Oto kilka przykładów:

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

W przypadku definicji bez inicjatora: zmienne ze statycznym czasem trwania przechowywania są niejawnie inicjowane wartością nil.

Deklaracja zmiennej w Lua

Jak widać w powyższych przykładach, przypisania zmiennych wielokrotnych są zgodne z formatem lista_zmiennych i lista_wartości. W powyższym przykładzielocal d, f = 5,10 mamy d i f na liście_zmiennych i 5 i 10 na liście wartości.

Przypisywanie wartości w Lua odbywa się jak pierwsza zmienna w lista_zmiennych z pierwszą wartością w liście_wartości i tak dalej. Stąd wartość d wynosi 5, a wartość f to 10.

Przykład

Wypróbuj poniższy przykład, w którym zmienne zostały zadeklarowane u góry, ale zostały zdefiniowane i zainicjowane wewnątrz funkcji głównej -

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

Kiedy powyższy kod jest budowany i wykonywany, daje następujący wynik -

value of a:	10
value of b:	30
value of a:	30
value of b:	10
value of f	23.333333333333

Lvalues ​​i Rvalues ​​w Lua

W Lua są dwa rodzaje wyrażeń -

  • lvalue- Wyrażenia odnoszące się do miejsca w pamięci nazywane są wyrażeniem „l-wartość”. Wartość l może pojawić się po lewej lub prawej stronie przypisania.

  • rvalue- Termin rvalue odnosi się do wartości danych przechowywanych pod jakimś adresem w pamięci. Wartość r to wyrażenie, któremu nie można przypisać wartości, co oznacza, że ​​wartość r może pojawić się po prawej stronie, ale nie po lewej stronie przypisania.

Zmienne to l-wartości, więc mogą pojawiać się po lewej stronie przydziału. Literały numeryczne są wartościami r, więc nie można ich przypisywać i nie mogą pojawiać się po lewej stronie. Poniżej znajduje się prawidłowe oświadczenie -

g = 20

Ale poniższe nie jest prawidłową instrukcją i spowodowałoby błąd w czasie kompilacji -

10 = 20

W języku programowania Lua, oprócz powyższych typów przypisań, możliwe jest posiadanie wielu l-wartości i r-wartości w jednej instrukcji. Jest to pokazane poniżej.

g,l = 20,30

W powyższym zestawieniu 20 przypisuje się g, a 30 przypisuje się l.