| Documentation language LUA |
Affectation des variables |
Changer la valeur d'une variable est une affectation.
> x = 1
> y = "bonjour"
> print(x, y)
1 bonjour
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 de =. 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 peuvent pas.
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)
Puisque des valeurs sont assignées comme si toutes les tâches sont simultanées, vous pouvez employer l'assignement multiple pour permuter des valeurs variables autour.
a,b = 1.2 -- déclare et affecte des variables
> print(a réglés, b) 1 2
> a,b
= b,a -- permutent les variables
>print(a, b) 2 1
>a,b = b,a
-- permutent les variables à nouveau
>print(a, b) 1 2
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 ]
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
www.loriotpro.com |
|