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