Librería (table)
¿Para qué sirve?
Section titled “¿Para qué sirve?”Esta librería expande enormemente las capacidades de las tablas estándar de Lua. No solo ofrece herramientas para manipular y consultar tablas, sino que también incluye funciones avanzadas para procesar datos, generar secuencias y realizar operaciones complejas que son fundamentales para la creación de efectos dinámicos.
Funciones
Section titled “Funciones”Funciones de inspección e información
Section titled “Funciones de inspección e información”Muestra el contenido completo de una tabla en un formato de texto legible. Invaluable para depurar.
Table: table: La tabla a visualizar.Name:? string, opcional: Nombre para la tabla en la salida de texto.
Comprueba si un elemento, tipo de elemento (number, string) o patrón de texto existe dentro de una tabla. Devuelve true o false.
Table: table: La tabla donde se buscará.e: any: El elemento a buscar.
Devuelve el índice (la posición) del primer elemento que coincida con la búsqueda.
Table: table: La tabla donde se buscará.e: any: El elemento cuyo índice se quiere encontrar.
Compara dos tablas de forma profunda para ver si son idénticas en contenido y estructura.
Table1: tableTable1: table: La tablas a comparar.
Analiza el contenido de una tabla y determina un tipo general para sus elementos, como number, string, shape, color, etc.
Table: table: La tabla a analizar.
Comprueba si un elemento, tipo de elemento (number, string) o patrón de texto existe dentro de una tabla. Devuelve true o false.
Table: table: La tabla donde contar.e: any: El elemento, tipo o patrón a contar.
Ejemplo
Section titled “Ejemplo”local cantidad_numeros = table.count({1, "a", 2}, "number") -- Devuelve: 2Devuelve una tabla con todos los índices en los que se encuentra un elemento, tipo o patrón.
Table: table: La tabla donde buscar.e: any: El elemento, tipo o patrón a localizar.
Ejemplo
Section titled “Ejemplo”local posiciones = table.pos({"a", "b", "a"}, "a") -- Devuelve: {1, 3}Funciones de manipulación y modificación
Section titled “Funciones de manipulación y modificación”Crea una copia exacta y profunda de una tabla. Crucial para modificar una tabla sin alterar la original.
Table: table: La tabla a duplicar.
Desordena aleatoriamente los elementos de una tabla.
Table: table | number: La tabla a desordenar. Si es un número, crea una tabla del1a ese número y la desordena.
Elimina elementos de una tabla por su índice o por un rango de índices.
Table: table: La tabla....: number | table: Índices individuales (2, 4) o un rango ({{2, 5}}).
Invierte el orden de los elementos de una tabla.
Table: table: La tabla.
Crea una tabla cíclica (palíndromo sin el último elemento). {a, b, c, d} se convierte en {a, b, c, d, c, b}.
Table: table | number: La tabla.
Inserta todos los elementos de Table2 dentro de Table1 en una posición específica.
Table1: tableTable2: table: La tablas.Index?: number, opcional: Posición de inserción. Por defecto, al final.
Aplica string.gsub a todos los elementos de tipo string dentro de una tabla.
Table: table: La tabla a modificar.Capture: string: El patrón a buscar.Replace: string: El texto de reemplazo.
Elimina los elementos duplicados de una tabla, dejando solo una aparición de cada uno.
Table: table: La tabla.
Ejemplo
Section titled “Ejemplo”table.unique({1, 2, 2, 3}) -- Devuelve: {1, 2, 3}Convierte una tabla con claves no numéricas (asociativa) en una tabla indexada (un array), descartando las claves.
Table: table: La tabla.
Ejemplo
Section titled “Ejemplo”table.ipairs({a="rojo", b="verde"}) -- Devuelve: {"rojo", "verde"}Agrupa los elementos de una tabla en sub-tablas de un tamaño determinado.
Table: table: La tabla.Group: number: El número de elementos que tendrá cada sub-tabla.
Ejemplo
Section titled “Ejemplo”table.inpack({1,2,3,4,5,6}, 2) -- Devuelve: {{1,2}, {3,4}, {5,6}}Filtra una tabla, devolviendo solo los elementos que cumplen una condición definida por una función de filtro. Es la contraparte de table.match, pero en lugar de buscar un valor, evalúa una condición lógica.
Table: table: La tabla cuyos elementos se van a filtrar.Filter: function: Una función que recibe dos argumentos,k(la clave o índice) yv(el valor del elemento). La función debe devolvertruepara los elementos que se desean conservar en la nueva tabla.
Ejemplo
Section titled “Ejemplo”-- Define un filtro que solo acepta números impares.local filtro_impares = function(k, v) if v % 2 == 1 then return true end return falseend
-- Aplica el filtro a una tabla.local mi_tabla = {1, 2, 3, 4, 5, 6}local tabla_filtrada = table.filter(mi_tabla, filtro_impares) -- Devuelve {1, 3, 5}Funciones de combinación y creación
Section titled “Funciones de combinación y creación”Funciones avanzadas para combinar tablas de diferentes maneras, creando permutaciones y emparejamientos. Se recomienda experimentar para entender su salida.
Genera todas las combinaciones posibles de n elementos a partir de una tabla.
Table: table: La tabla.n: number: El tamaño de cada combinación.
Ejemplo
Section titled “Ejemplo”table.inpack({1,2,3,4,5,6}, 2) -- Devuelve: {{1,2}, {3,4}, {5,6}}Genera todas las permutaciones (órdenes) posibles de los elementos de una tabla.
Table: table: La tabla.
Crea una tabla de un tamaño específico, llenando cada posición con un valor o una copia de una tabla.
Table: table: La tabla.Config: any: El valor con el que se llenará cada posición.
Repite un conjunto de elementos un número determinado de veces para crear una tabla más grande.
Len: number: El número de veces que se repetirá la secuencia....: any: Los elementos a repetir.
Ejemplo
Section titled “Ejemplo”table.replay(3, "a", "b") -- Devuelve: {"a", "b", "a", "b", "a", "b"}Divide una cadena de texto en una tabla de sub-cadenas, cada una con una longitud de n caracteres.
String: string: La cadena de texto a dividir.n: number: El tamaño de cada parte.
Ejemplo
Section titled “Ejemplo”table.string("abcdef", 2) -- Devuelve {"ab", "bc", "cd", "de", "ef"}Realiza una búsqueda global (gmatch) sobre un texto y devuelve todas las capturas en una tabla.
String: string: El texto donde buscar.Capture: string: El patrón de búsqueda.
Ejemplo
Section titled “Ejemplo”table.capture("hola 123 mundo", "%d+") -- Devuelve: {"123"}Devuelve una nueva tabla que contiene solo los elementos de la tabla original que coinciden con el valor, tipo o patrón de búsqueda.
Table: table: La tabla a filtrar.Capture: any: El criterio de coincidencia.
Funciones de procesamiento avanzado
Section titled “Funciones de procesamiento avanzado”Una función “multiherramienta” que realiza diversas operaciones matemáticas o de ordenamiento sobre una tabla.
Table: table: La tabla.Mode: enum: La operación a realizar:"sum","average","min","max","org"(ordenar),"concat", etc.add: varía, opcional: Un valor adicional para ciertas operaciones.
Interpola valores entre los elementos de una tabla. Puede interpolar números, colores, alfas, shapes y clips. Es fundamental para animaciones suaves.
Table: table: La tabla.Size: number: El número de pasos de interpolación.Tags: string | table, opcional: Una etiqueta de ASS (p.e.\fscx) para añadir a cada valor.algorithm: string, opcional: Una fórmula para la aceleración (ej."sin(pi/2 * %s)").
Filtra una tabla, devolviendo solo los elementos que cumplen una condición definida por una función.
Table: table: La tabla a filtrar.Filter: function: Función que recibe(índice, valor)y devuelvetruepara conservar el elemento.
Funciones misceláneas
Section titled “Funciones misceláneas”Una función “multiherramienta” que realiza diversas operaciones matemáticas o de ordenamiento sobre una tabla.
Table: table: La tabla de la que se elegirá un elemento.
Versión de remember para tablas. Guarda múltiples pares de referencia-valor en la tabla recall de una sola vez.
table_ref: table: Tabla con los nombres (strings) de las referencias.table_val: table: Tabla con los valores a guardar.
