LoriotPro Extended Edition Programmation en language LUA

Table des matières

HelpLUA

Affectation des variables

Affectation des valeurs

Changer la valeur d'une variable est une affectation. L'instruction d'affectation de valeur est ici représentée par le symbole = .

> x = 1
> y = "bonjour"
> print(x, y)
1 bonjour

Affectation multiple

Dans Lua nous pouvons réaliser plusieurs affectation, par exemple:

> x, y = 2, "ici et là"
> print(x, y)
2 ici et là

La liste de valeurs du côté droit est affectée la liste de variables du côté gauche du signe = .

Nous pouvons affecter autant de valeurs que nous le souhaitons et elles peuvent ne pas être toutes du même type par exemple:

> a,b,c,d,e,f = 1,"two",3,3.14159,"foo",{ this="a table" }
> print(a,b,c,d,e,f)
1 two 3 3.14159 foo table: 0035BED8

Les valeurs du côté droit du signe égal peuvent être des expressions, comme i+1, mais les valeurs du côté gauche ne le peuvent pas. L'évaluation se produit avant l'affectation

Toutes les expressions sont évaluées en premier par LUA. L'expression évaluée est alors affecter.

I = 7
>I, x = i+1, I
>print(i, x)
8 7

Quand Lua atteint la deuxième ligne, il évalue les expressions i+1 et i avant toute autre chose. Après évaluation, la deuxième ligne devient i, x = 8, 7. Alors Lua effectue les affectations vers la gauche (voir ci-dessous pour l'ordre de tâche)

Permutation des valeurs

Parce que les valeurs sont affectées comme si toutes les affectations étaient simultanées, vous pouvez employer l'affectation multiple pour permuter les valeurs des variables.

a,b = 1.2 -- déclare et affecte des variables
> print(a réglés, b) 1 2
> a,b = b,a -- permute les variables
>print(a, b) 2 1
>a,b = b,a -- permute les variables à nouveau
>print(a, b) 1 2

Ordre des affectations

L'ordre dans lequel des affectations multiples sont effectuées n'est pas défini.

Ceci signifie que vous ne devriez pas supposer que les affectations sont faites de la gauches vers la droite ;

si la même variable ou référence de table se produit deux fois dans la liste des affectations, vous pouvez être étonné par les résultats.

> a, a = 1, 2 > print(a) 1

Notez, dans l'exemple ci-dessus Lua fait des affectations de droite à gauche, c.-à-d., a=2 et puis a=1.

Cependant, nous ne devrions pas dépendre de ces contraintes dans de futures versions de Lua. Si l'ordre de l'affectation est important, vous devez employer des instructions d'affectation séparées.

En particulier, observez la déclarartion suivante. Si i==j (et i~=k), ces deux syntaxes font différentes choses :

> table[i ], table[j ] = table[j ], table[k ]
> table[j ], table[i ] = table[k ], table[j ]

On devrait utiliser deux syntaxes séparés. Ceci permutent toujours les deux valeurs, cependant :

> table[i ], table[j ] = table[j ], table[i ]

Tailles mal adaptées de liste

Si une liste de valeur est plus longue que la liste de variables, les valeurs supplémentaires sont ignorées.

> a, b, c = 1.2.3.4.5.6
> print(a, b, c)
1 2 3

Si une liste de valeur est plus courte que la liste de variable, Lua assigne la valeur nil aux variables sans valeur.

> a, b, c, d = 1.2
> print(a, b, c, d)
1 2 nil nil



LUTEUS www.loriotpro.com