Latest web development tutorials

Lua mesa (tabla)

tabla Lua es una estructura de datos utilizada para ayudarnos a crear diferentes tipos de datos, tales como: digital, los diccionarios.

Lua mesa con la matriz asociada, se puede utilizar cualquier tipo de valor para hacer un índice de la matriz, pero este valor no es nulo.

Lua tamaño de la tabla no es fijo, se puede ampliar en función de sus necesidades.

Lua también a través de la mesa para resolver el módulo (módulo), el paquete (paquete) y el objeto (objeto) de. Por ejemplo string.format indicación "formato" para indexar la tabla de cadenas.


tabla de configuración (tabla)

El constructor es una expresión para crear e inicializar la tabla. tabla Lua es algo muy poderoso único. El constructor más simple es {} se utiliza para crear una tabla vacía. Puede inicializar directamente la matriz:

-- 初始化表
mytable = {}

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

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

Cuando la mesa un conjunto de elementos, y luego asignamos A a B, entonces A y B apuntan a la misma memoria. Si un conjunto a cero, entonces b también se puede acceder a la tabla de elementos. Si no se especifica la variable apunta a una, la recolección de basura de Lua va a limpiar la memoria correspondiente.

El siguiente ejemplo demuestra la descripción anterior de la situación:

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

El código de seguridad se ejecuta como resultado de:

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

mesa de operaciones

La siguiente tabla muestra los métodos comunes de la operación:

No. Método y Propósito
1 table.concat (tabla [, Sep [, start [, end]]]):

concat es concatenar (cadena de eslabones) abreviatura. table.concat función () especifica los parámetros que figuran en la parte matriz de tabla de todos los elementos de posición inicial a la posición final, espaciadas entre elementos en el separador especificado (SEP).

2 table.insert (mesa, [pos], valor):

Array parte de la mesa especificado Lugar de (pos) de inserción es un elemento de valor. Pos parámetro es opcional y por omisión a la parte final de la matriz.

3 table.maxn (tabla)

Especificar el valor clave de la tabla para todos los números positivos el mayor valor de la clave. Si el valor es positivo, el elemento clave no está presente, devuelve 0. (Después de Lua5.2 este método no existe, este artículo utiliza una función personalizada para lograr)

4 table.remove (tabla [pos])

Devuelve una matriz de parte de la tabla se encuentra en la posición pos elemento Posteriormente elemento se moverá hacia adelante. Pos parámetro es opcional y por omisión a la longitud de la tabla, a partir del último elemento eliminado.

5 table.sort (tabla [, comp])

Para una tabla dada en orden ascendente.

A continuación nos fijamos en los ejemplos de estos métodos.

Tabla de conexión

Podemos utilizar el método concat () para conectar dos tipos de tabla:

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

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

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

Ejecutar los resultados de la salida el código de seguridad:

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

La inserción y extracción

El siguiente ejemplo demuestra las operaciones de inserción y remoción tabla:

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

Ejecutar los resultados de la salida el código de seguridad:

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

ordenación de la tabla

El siguiente ejemplo demuestra el método sort () de uso, para Ordenar tabla:

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

Ejecutar los resultados de la salida el código de seguridad:

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

Tabla Max

table.maxn después Lua5.2 este método no existe, definimos métodos table_maxn.

El siguiente ejemplo muestra cómo obtener el máximo valor de la tabla:

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

Ejecutar los resultados de la salida el código de seguridad:

tbl 长度 	3
tbl 最大值 	26