Variables Lua
Avant d'utiliser une variable, elle doit être déclarée dans le code, c'est-à-dire que la variable doit être créée.
Avant que le compilateur n'exécute le code, le compilateur doit savoir comment ouvrir une zone de stockage pour les variables d'instruction afin de stocker la valeur de la variable.
Les variables Lua ont trois types : les variables globales, les variables locales et les champs dans les tableaux.
Toutes les variables de Lua sont des variables globales, même dans des blocs d'instructions ou des fonctions, à moins qu'elles ne soient explicitement déclarées comme variables locales en utilisant local.
La portée d'une variable locale s'étend de la position de déclaration jusqu'à la fin du bloc d'instruction.
La valeur par défaut des variables est nulle.
-- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end joke() print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 全局变量 print(a,b); --> 6 6 end print(a,b) --> 5 6
Le résultat de l'exécution de l'exemple ci-dessus est :
$ lua test.lua 5 nil 6 6 5 6
Instruction d'affectation
L'affectation est la méthode la plus élémentaire pour modifier la valeur d'une variable et modifier le champ du tableau.
a = "hello" .. "world" t.n = t.n + 1Lua peut attribuer des valeurs à plusieurs variables en même temps. Chaque élément de la liste de variables et de la liste de valeurs est séparé par des virgules. La valeur à droite de l'instruction d'affectation sera attribuée à la variable de gauche. à son tour.
a, b = 10, 2*x <--> a=10; b=2*x
Lorsqu'il rencontre une instruction d'affectation, Lua calculera d'abord toutes les valeurs à droite, puis effectuera l'opération d'affectation, afin que nous puissions échanger les valeurs des variables comme ceci :
x, y = y, x -- swap 'x' for 'y' a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
Quand le nombre de variables et le nombre de valeurs sont incohérents, Lua adoptera toujours la stratégie suivante en fonction du nombre de variables :
a. 变量个数 > 值的个数 按变量个数补足nil b. 变量个数 < 值的个数 多余的值会被忽略
Par exemple :
a, b, c = 0, 1 print(a,b,c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a,b) --> 1 2 a, b, c = 0 print(a,b,c) --> 0 nil nil
Le dernier exemple ci-dessus est une situation d'erreur courante Remarque : Si vous souhaitez attribuer des valeurs à plusieurs variables, chaque variable doit se voir attribuer une valeur à son tour.
a, b, c = 0, 0, 0 print(a,b,c) --> 0 0 0
Les affectations de valeurs multiples sont souvent utilisées pour échanger des variables ou renvoyer des appels de fonction à des variables :
a, b = f()
f() renvoie deux valeurs, la première est affectée à a et la seconde est affectée Donnez b.
Vous devez utiliser des variables locales autant que possible. Il y a deux avantages :
1. Évitez les conflits de noms.
2. L'accès aux variables locales est plus rapide que les variables globales.
Index
Utilisez des crochets [] pour les index des tableaux. Lua fournit également l'opération .
t[i] t.i -- 当索引为字符串类型时的一种简化写法 gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
Par exemple :
> site = {} > site["key"] = "www.w3cschool.cc" > print(site["key"]) www.w3cschool.cc > print(site.key) www.w3cschool.cc