Módulo:Tablas/doc
Hechura
Esta es la página de documentación de Módulo:Tablas
Todas las funciones del módulo se llaman desde Lua.
Funciones
[hace edit con el source]Las funciones son:
tostring(tabla)- Convierte la
tablaen una cadena de caracteres.
elemento(tabla, indice1, indice2, ..., indicen)- Devuelve el elemento tabla[indice1][indice2]...[indicen]
en(tabla, valor)- Devuelve la clave del elemento de tabla con ese valor si el elemento pertenece a la tabla.
insertar(tabla, elemento)- Inserta el elemento en la tabla si no está ya incluido.
- Parámetros:
- tabla: Tabla lua. Obligatorio.
- elemento: Elemento a insertar. Optativo
- Valor devuelto: La función devuelve true si el elemento a insertar está informado (no es nil) y false si no se le pasa ningún elemento a insertar.
copiarElementosConValor(tabla)- Devuelve una copia de la tabla eliminando los elementos sin valor
sonIguales(tabla1, tabla2)- Devuelve si las dos tablas son iguales.
ordenar(tabla, función)- Ordena la tabla utilizando la función. Similar a la función sort de table pero es estable.
agrupar(tabla, clave, campo)
ordenar(tabla, función)
[hace edit con el source]Función para ordenar una tabla de forma estable. La función permite además ordenar valores nulos que se sitúan al principio de la tabla ordenada. Por ejemplo, si tenemos:
local moduloTablas = require('Módulo:Tablas')
local ordenarTabla = moduloTablas.ordenar
local t = {
[1] = {
["id"] = "Q255032",
["anyo"] = "1965"
},
[2] = {
["id"] = "Q936683",
["anyo"] = "1967"
},
[3] = {
["id"] = "Q1056265",
["anyo"] = "1968"
},
[4] = {
["id"] = "Q1086189",
["anyo"] = "1970"
},
[5] = {
["id"] = "Q549884",
["anyo"] = "1970"
},
[6] = {
["id"] = "Q549884",
["anyo"] = "1971"
},
[7] = {
["id"] = "Q610903",
["anyo"] = "1975"
},
[8] = {
["id"] = "Q1056251",
["anyo"] = "1976"
},
[9] = {
["id"] = "Q3405406",
["anyo"] = "1976"
},
[10] = {
["id"] = "Q3625727",
["anyo"] = "1976"
},
[11] = {
["id"] = "Q898527",
["anyo"] = "1978"
},
[12] = {
["id"] = "Q901462",
["anyo"] = "1981"
},
[13] = {
["id"] = "Q3910469",
["anyo"] = "1987"
},
[14] = {
["id"] = "Q255032",
["anyo"] = "1958"
}
}
local t2 = ordenarTabla(t, {'id', 'anyo'})
t2 será igual a:
{
[1] = {
["anyo"] = "1976",
["id"] = "Q1056251"
},
[2] = {
["anyo"] = "1968",
["id"] = "Q1056265"
},
[3] = {
["anyo"] = "1970",
["id"] = "Q1086189"
},
[4] = {
["anyo"] = "1958",
["id"] = "Q255032"
},
[5] = {
["anyo"] = "1965",
["id"] = "Q255032"
},
[6] = {
["anyo"] = "1976",
["id"] = "Q3405406"
},
[7] = {
["anyo"] = "1976",
["id"] = "Q3625727"
},
[8] = {
["anyo"] = "1987",
["id"] = "Q3910469"
},
[9] = {
["anyo"] = "1970",
["id"] = "Q549884"
},
[10] = {
["anyo"] = "1971",
["id"] = "Q549884"
},
[11] = {
["anyo"] = "1975",
["id"] = "Q610903"
},
[12] = {
["anyo"] = "1978",
["id"] = "Q898527"
},
[13] = {
["anyo"] = "1981",
["id"] = "Q901462"
},
[14] = {
["anyo"] = "1967",
["id"] = "Q936683"
}
}
agrupar(tabla, clave, campo)
[hace edit con el source]Función para agrupar los elementos de la tabla con la misma clave. La tabla debe ordenarse previamente. En el ejemplo anterior el código:
local agruparTabla = moduloTablas.agrupar
local t3 = agrupar(t2, 'id', 'anyo')
hará que la tabla t3 valga:
{
[1] = {
["anyo"] = {
[1] = "1976"
},
["id"] = "Q1056251"
},
[2] = {
["anyo"] = {
[1] = "1968"
},
["id"] = "Q1056265"
},
[3] = {
["anyo"] = {
[1] = "1970"
},
["id"] = "Q1086189"
},
[4] = {
["anyo"] = {
[1] = "1958",
[2] = "1965"
},
["id"] = "Q255032"
},
[5] = {
["anyo"] = {
[1] = "1976"
},
["id"] = "Q3405406"
},
[6] = {
["anyo"] = {
[1] = "1976"
},
["id"] = "Q3625727"
},
[7] = {
["anyo"] = {
[1] = "1987"
},
["id"] = "Q3910469"
},
[8] = {
["anyo"] = {
[1] = "1970",
[2] = "1971"
},
["id"] = "Q549884"
},
[9] = {
["anyo"] = {
[1] = "1975"
},
["id"] = "Q610903"
},
[10] = {
["anyo"] = {
[1] = "1978"
},
["id"] = "Q898527"
},
[11] = {
["anyo"] = {
[1] = "1981"
},
["id"] = "Q901462"
},
[12] = {
["anyo"] = {
[1] = "1967"
},
["id"] = "Q936683"
}
}