Latest web development tutorials

tavolo Lua (tabella)

tavolo Lua è una struttura di dati utilizzata per aiutarci a fornire diversi tipi di dati, come ad esempio: digitali, dizionari.

tavolo Lua con la matrice associata, è possibile utilizzare qualsiasi tipo di valore per fare un indice della matrice, ma questo valore non è pari a zero.

Lua dimensione della tabella non è fisso, è possibile espandere in base alle loro esigenze.

Lua anche attraverso la tabella per risolvere il modulo (modulo), il pacchetto (package) e l'oggetto (Object) di. Per esempio l'indicazione String.Format "format" per indicizzare la stringa tavolo.


tabella (Tabella) Configurazione

Il costruttore è un'espressione per creare e inizializzare la tabella. tavolo Lua è roba potente unico. Il costruttore più semplice è {} utilizzata per creare una tabella vuota. È possibile inizializzare direttamente l'array:

-- 初始化表
mytable = {}

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

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

Quando tavolo un insieme di elementi, e quindi assegnare un a b, allora A e B alla stessa memoria. Se un set a zero, allora b può anche accedere alla tabella degli elementi. Se non si specificano i punti variabili per una, raccolta dei rifiuti di Lua pulirà la memoria corrispondente.

L'esempio seguente mostra la descrizione sopra della situazione:

-- 简单的 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)

Il codice precedente viene eseguito come risultato di:

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

Tabella di funzionamento

La seguente tabella elenca i comuni metodi di funzionamento:

No. Metodo & Purpose
1 table.concat (tabella [sep [, start [, end]]]):

concat è concatenate (collegamento a catena) sigla. Funzione table.concat () specifica i parametri elencati nella parte matrice di tabella di tutti gli elementi da posizione iniziale alla posizione finale, distanziati tra gli elementi del separatore specificato (SEP).

2 table.insert (tavolo, [pos,] il valore):

Array tabella parte posizione specificata (pos) inserto è un elemento di valore. Parametro Pos è opzionale e default la porzione di estremità della matrice.

3 table.maxn (tabella)

Specificare il valore chiave della tabella per tutti i numeri positivi il più grande valore della chiave. Se il valore è positivo, l'elemento chiave non è presente, restituisce 0. (Dopo Lua5.2 questo metodo non esiste, questo articolo utilizza una funzione personalizzata per raggiungere)

4 table.remove (tabella [pos])

Restituisce un array di porzione di tabella si trova in posizione di elemento pos Successivamente elemento verrà spostato in avanti. Parametro Pos è facoltativo e il valore predefinito è la lunghezza del tavolo, a partire dall'ultimo elemento eliminato.

5 table.sort (tabella [, comp])

Per una data tabella in ordine crescente.

Prossimo guardiamo gli esempi di questi metodi.

Tabella dei collegamenti

Possiamo usare concat () per collegare due tabella:

fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
print("连接后的字符串 ",table.concat(fruits))

-- 指定连接字符
print("连接后的字符串 ",table.concat(fruits,", "))

-- 指定索引来连接 table
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))

Eseguire i risultati di output di codice di cui sopra:

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

Inserimento e la rimozione

L'esempio seguente illustra le operazioni di inserimento e rimozione tabella:

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

Eseguire i risultati di output di codice di cui sopra:

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

Tabella di smistamento

L'esempio seguente mostra il tipo () di uso, per la Tabella Ordina:

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

Eseguire i risultati di output di codice di cui sopra:

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

Tabella Max

table.maxn dopo Lua5.2 questo metodo non esiste, definiamo metodi table_maxn.

L'esempio seguente mostra come ottenere la tabella di valore massimo:

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

Eseguire i risultati di output di codice di cui sopra:

tbl 长度 	3
tbl 最大值 	26