Table Lua(tableau)
table est une structure de données en Lua qui nous aide à créer différents types de données, tels que des nombres, des dictionnaires, etc.
La table Lua utilise des tableaux associatifs. Vous pouvez utiliser n'importe quel type de valeur comme index du tableau, mais cette valeur ne peut pas être nulle.
La table Lua n'a pas de taille fixe et vous pouvez l'agrandir selon vos besoins.
Lua utilise également des tables pour résoudre des modules, des packages et des objets. Par exemple, string.format signifie utiliser « format » pour indexer la chaîne de la table.
Construction de table (table)
Le constructeur est une expression qui crée et initialise la table. Les tables sont un élément puissant unique à Lua. Le constructeur le plus simple est {}, qui crée une table vide. Vous pouvez initialiser le tableau directement :
-- 初始化表 mytable = {} -- 指定值 mytable[1]= "Lua" -- 移除引用 mytable = nil -- lua 垃圾回收会释放内存
Lorsque nous définissons les éléments de la table a, puis attribuons a à b, a et b pointent tous deux vers la même mémoire. si a est défini sur zéro , alors b peut également accéder aux éléments de la table. S'il n'y a aucune variable spécifiée pointant vers a, le mécanisme de garbage collection de Lua nettoiera la mémoire correspondante.
L'exemple suivant illustre la description ci-dessus :
-- 简单的 table mytable = {} print("mytable 的类型是 ",type(mytable)) mytable[1]= "Lua" mytable["wow"] = "修改前" print("mytable 索引为 1 的元素是 ", mytable[1]) print("mytable 索引为 wow 的元素是 ", mytable["wow"]) -- alternatetable和mytable的是指同一个 table alternatetable = mytable print("alternatetable 索引为 1 的元素是 ", alternatetable[1]) print("mytable 索引为 wow 的元素是 ", alternatetable["wow"]) alternatetable["wow"] = "修改后" print("mytable 索引为 wow 的元素是 ", mytable["wow"]) -- 释放变量 alternatetable = nil print("alternatetable 是 ", alternatetable) -- mytable 仍然可以访问 print("mytable 索引为 wow 的元素是 ", mytable["wow"]) mytable = nil print("mytable 是 ", mytable)
Le résultat de l'exécution du code ci-dessus est :
mytable 的类型是 table mytable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 alternatetable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 mytable 索引为 wow 的元素是 修改后 alternatetable 是 nil mytable 索引为 wow 的元素是 修改后 mytable 是 nil
Les opérations de table
sont répertoriées ci-dessous Méthodes couramment utilisées pour les opérations sur les tables :
Numéro de série | Méthode et objectif | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | table.concat (table [, sep [, start [, end]]]) :
| ||||||||||||
2 | table.insert (table, [pos,] valeur) :<🎜>dans le tableau La partie du tableau spécifie la position (pos) pour insérer un élément dont la valeur est value. Le paramètre pos est facultatif et est par défaut à la fin de la partie du tableau.<🎜> | ||||||||||||
3 | < td>table.maxn (table)<🎜>Spécifie la plus grande valeur de clé parmi toutes les valeurs de clé positives dans le tableau s'il n'y a aucun élément avec une valeur de clé positive. , 0 est renvoyé. (Cette méthode n'existe plus après Lua5.2, cet article utilise une fonction personnalisée pour l'implémenter)<🎜>|||||||||||||
table.remove (table [, pos])<🎜>Renvoie l'élément à la position pos dans la partie du tableau du tableau qui sera avancé. pos Le paramètre est facultatif et prend par défaut la longueur du tableau, qui est supprimée du dernier élément. <🎜> | |||||||||||||
5 | table.sort (table [, comp])<🎜>Pour le tableau donné Trier par ordre croissant. <🎜> |
Jetons ensuite un coup d’œil à des exemples de ces méthodes.
Connexion de table
Nous pouvons utiliser la méthode concat() pour connecter deux tables :
fruits = {"banana","orange","apple"} -- 返回 table 连接后的字符串 print("连接后的字符串 ",table.concat(fruits)) -- 指定连接字符 print("连接后的字符串 ",table.concat(fruits,", ")) -- 指定索引来连接 table print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
Le résultat de l'exécution du code ci-dessus est :
连接后的字符串 bananaorangeapple 连接后的字符串 banana, orange, apple 连接后的字符串 orange, apple
Insérer et supprimer
L'exemple suivant montre les opérations d'insertion et de suppression de la table :
fruits = {"banana","orange","apple"} -- 在末尾插入 table.insert(fruits,"mango") print("索引为 4 的元素为 ",fruits[4]) -- 在索引为 2 的键处插入 table.insert(fruits,2,"grapes") print("索引为 2 的元素为 ",fruits[2]) print("最后一个元素为 ",fruits[5]) table.remove(fruits) print("移除后最后一个元素为 ",fruits[5])
Le résultat de l'exécution du code ci-dessus est :
索引为 4 的元素为 mango 索引为 2 的元素为 grapes 最后一个元素为 mango 移除后最后一个元素为 nil
Tri des tables
ci-dessous L'exemple montre l'utilisation de la méthode sort() pour trier le tableau :
fruits = {"banana","orange","apple","grapes"} print("排序前") for k,v in ipairs(fruits) do print(k,v) end table.sort(fruits) print("排序后") for k,v in ipairs(fruits) do print(k,v) end
Le résultat de l'exécution du code ci-dessus est :
排序前 1 banana 2 orange 3 apple 4 grapes 排序后 1 apple 2 banana 3 grapes 4 orange
Valeur maximale du tableau
table.maxn Cette méthode n'existe plus après Lua5.2, et nous définissons la méthode table_maxn pour l'implémenter.
L'exemple suivant montre comment obtenir la valeur maximale dans le tableau :
function table_maxn(t) local mn = 0 for k, v in pairs(t) do if mn < k then mn = k end end return mn end tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"} print("tbl 长度 ", #tbl) print("tbl 最大值 ", table_maxn(tbl))
Le résultat de l'exécution du code ci-dessus est :
tbl 长度 3 tbl 最大值 26