Lua - Variables

Une variable n'est rien d'autre qu'un nom donné à une zone de stockage que nos programmes peuvent manipuler. Il peut contenir différents types de valeurs, notamment des fonctions et des tables.

Le nom d'une variable peut être composé de lettres, de chiffres et du caractère de soulignement. Il doit commencer par une lettre ou un trait de soulignement. Les lettres majuscules et minuscules sont distinctes car Lua est sensible à la casse. Il existe huit types de valeurs de base dans Lua -

Dans Lua, bien que nous n'ayons pas de types de données variables, nous avons trois types basés sur la portée de la variable.

  • Global variables - Toutes les variables sont considérées comme globales à moins qu'elles ne soient explicitement déclarées comme locales.

  • Local variables - Lorsque le type est spécifié comme local pour une variable, sa portée est limitée par les fonctions à l'intérieur de leur portée.

  • Table fields - C'est un type spécial de variable qui peut contenir tout sauf nil, y compris les fonctions.

Définition de variable dans Lua

Une définition de variable signifie dire à l'interpréteur où et combien créer le stockage pour la variable. Une définition de variable a un type facultatif et contient une liste d'une ou plusieurs variables de ce type comme suit -

type variable_list;

Ici, type est éventuellement local ou de type spécifié, ce qui le rend global, et variable_listpeut consister en un ou plusieurs noms d'identificateurs séparés par des virgules. Certaines déclarations valides sont affichées ici -

local    i, j
local    i
local    a,c

La ligne local i, jà la fois déclare et définit les variables i et j; qui demande à l'interpréteur de créer des variables nommées i, j et limite la portée à être locale.

Les variables peuvent être initialisées (affectées d'une valeur initiale) dans leur déclaration. L'initialiseur se compose d'un signe égal suivi d'une expression constante comme suit -

type variable_list = value_list;

Quelques exemples sont -

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

Pour une définition sans initialiseur: les variables avec une durée de stockage statique sont implicitement initialisées avec nil.

Déclaration de variable en Lua

Comme vous pouvez le voir dans les exemples ci-dessus, les affectations de variables multiples suivent un format variable_list et value_list. Dans l'exemple ci-dessuslocal d, f = 5,10 nous avons d et f dans variable_list et 5 et 10 dans la liste de valeurs.

L'affectation de valeur dans Lua a lieu comme la première variable dans la variable_list avec la première valeur dans la value_list et ainsi de suite. Par conséquent, la valeur de d est 5 et la valeur de f est 10.

Exemple

Essayez l'exemple suivant, où les variables ont été déclarées en haut, mais elles ont été définies et initialisées dans la fonction principale -

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

Lorsque le code ci-dessus est construit et exécuté, il produit le résultat suivant -

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

Lvalues ​​et Rvalues ​​dans Lua

Il existe deux types d'expressions dans Lua -

  • lvalue- Les expressions qui font référence à un emplacement mémoire sont appelées expression "lvalue". Une lvalue peut apparaître comme le côté gauche ou droit d'une affectation.

  • rvalue- Le terme rvalue fait référence à une valeur de données qui est stockée à une certaine adresse en mémoire. Une rvalue est une expression qui ne peut pas avoir de valeur assignée, ce qui signifie qu'une rvalue peut apparaître sur le côté droit, mais pas sur le côté gauche d'une affectation.

Les variables sont des valeurs l et peuvent donc apparaître sur le côté gauche d'une affectation. Les littéraux numériques sont des valeurs r et ne peuvent donc pas être affectés et ne peuvent pas apparaître sur le côté gauche. Voici une déclaration valide -

g = 20

Mais suivre n'est pas une instruction valide et générerait une erreur au moment de la construction -

10 = 20

En langage de programmation Lua, en dehors des types d'affectation ci-dessus, il est possible d'avoir plusieurs lvalues ​​et rvalues ​​dans la même instruction unique. Il est montré ci-dessous.

g,l = 20,30

Dans la déclaration ci-dessus, 20 est attribué à g et 30 est attribué à l.