Latest web development tutorials

Table Lua (tableau)

Table Lua est une structure de données utilisée pour nous aider à créer différents types de données, telles que: numérique, dictionnaires.

Table Lua avec le tableau associé, vous pouvez utiliser tout type de valeur pour faire un index du tableau, mais cette valeur est nulle.

Lua taille de la table est pas fixe, vous pouvez développer en fonction de leurs besoins.

Lua aussi à travers la table pour résoudre le module (module), le paquet (package) et l'objet (Object) de. Par exemple indication de string.format "format" pour indexer la chaîne de table.


table (Table) configuration

Le constructeur est une expression pour créer et initialiser la table. Table Lua est une chose puissante unique. Le constructeur le plus simple est {} utilisé pour créer une table vide. Vous pouvez directement initialiser le tableau:

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"

-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存

Lorsque nous déposons un ensemble d'éléments, puis attribuons a à b, puis a et b le point à la même mémoire. Si un ensemble de zéro, alors b peut également accéder à la table des éléments. Si vous ne spécifiez pas les points variables à un, la collecte des ordures de Lua va nettoyer la mémoire correspondante.

L'exemple suivant montre la description ci-dessus de la situation:

-- 简单的 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 code ci-dessus est exécutée à la suite de:

mytable 的类型是 	table
mytable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
alternatetable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
mytable 索引为 wow 的元素是 	修改后
alternatetable 是 	nil
mytable 索引为 wow 的元素是 	修改后
mytable 是 	nil

Table d'opération

Le tableau suivant présente les méthodes de fonctionnement communs:

Non. Méthode & Objet
1 table.concat (tableau [, septembre [, début [, fin]]]):

concat est concaténation (chaîne lien) abréviation. table.concat fonction () spécifie les paramètres indiqués dans la partie de tableau de table de tous les éléments de la position de départ à la position finale, espacées entre les éléments dans le séparateur spécifié (sep).

2 table.insert (table, [pos,] valeur):

Tableau table de partie emplacement spécifié (pos) insert est un élément de valeur. Paramètre Pos est optionnel et par défaut à la partie d'extrémité du réseau.

3 table.maxn (tableau)

Indiquez la valeur de clé de table pour tous les nombres positifs la plus grande valeur clé. Si la valeur est positive, l'élément clé est absente, elle retourne 0. (Après Lua5.2 cette méthode n'existe pas, cet article utilise une fonction personnalisée pour atteindre)

4 table.remove (tableau [, pos])

Retourne un tableau de la partie de la table est située à élément de position pos Ensuite élément sera déplacé vers l'avant. Paramètre Pos est optionnel et par défaut à la longueur de la table, à partir du dernier élément supprimé.

5 table.sort (tableau [, comp])

Pour une table donnée dans l'ordre croissant.

Ensuite, nous regardons les exemples de ces méthodes.

Connexion Tableau

Nous pouvons utiliser 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))

Exécuter les résultats de sortie de code ci-dessus:

连接后的字符串 	bananaorangeapple
连接后的字符串 	banana, orange, apple
连接后的字符串 	orange, apple

Insertion et retrait

L'exemple suivant illustre les opérations d'insertion de table et de retrait:

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

Exécuter les résultats de sortie de code ci-dessus:

索引为 4 的元素为 	mango
索引为 2 的元素为 	grapes
最后一个元素为 	mango
移除后最后一个元素为 	nil

Table de tri

L'exemple suivant illustre le genre () méthode d'utilisation, pour le tableau Trier:

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

Exécuter les résultats de sortie de code ci-dessus:

排序前
1	banana
2	orange
3	apple
4	grapes
排序后
1	apple
2	banana
3	grapes
4	orange

Table Max

table.maxn après Lua5.2 cette méthode n'existe pas, nous définissons les méthodes de table_maxn.

L'exemple suivant montre comment obtenir la table de valeur maximale:

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

Exécuter les résultats de sortie de code ci-dessus:

tbl 长度 	3
tbl 最大值 	26