Anuncios Google

[SOLUCIONADO POR RG, XERPI Y ZEROZELTA] Crear tabla mediante una función en LuaDev.

Buenas, vuelvo con otra duda. Esta vez he estado probando sobre como crear una tabla dentro de otra tabla mediante alguna función, pero solo he encontrado table.insert(), y lo cierto es que no puede (o no sé) crear tablas dentro de otras tablas, que es exactamente lo que quiero.

La función es la siguiente:

personas = {} -- Creo una tabla que contendrá las subtablas que yo quiera...
 
function crearPersona(nombre,edad,sexo) -- Función para crear una persona nueva...
    table.insert(personas,¿nombre = {}?); -- ¿? es que no sé que poner...
    table.insert(personas.nombre,¿edadPersona = edad?); -- ¿? es que no sé que poner...
    table.insert(personas.nombre,¿sexoPersona = sexo?); -- ¿? es que no sé que poner...
end -- Fin
 
crearPersona(persona1,14,"hombre"); -- Pero no funciona =/
 
[...] -- Continúa el code...

Lo que está entre interrogaciones es que no se que poner dentro...

Algún coder que ya haya hecho algo parecido o que sepa como hacerlo, agradezco su ayuda :D

Un saludo.

SOLUCIONADO POR RG, XERPI (POR MSN) Y ZEROZELTA.


 

 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de zerozelta

Solucionado por RG y xerpi?

Solucionado por RG y xerpi? XD talves te estes confundiendo, pero no veo ningun comentario de xerpi aqui jaja

saludos¡¡

Existe el msm, mensajes

Existe el msm, mensajes privados y muchas redes sociales por la que hablar :)

Imagen de zerozelta

jaja XD si ya vi eso, pense

jaja XD si ya vi eso, pense que me confundio con el, grcias por el aviso XD

saludos¡

Sí, es cierto...

Aunque tu me ayudaste con los efectos visuales según creo...

EDITO: ah, es verdad, por tu coment de abajo, ok ;D

Imagen de User170294

Además tú también le has

Además tú también le has ayudado.

Imagen de zerozelta

Aqui la tienes facil, creas

Aqui la tienes facil, creas la tabla principal (la qeu contiene a las personas)

personas = {}

ahora la funcion para añadir personas al directorio:

function crearPersona(nombre,edad,sexo)

end

hasta aqui vas perfecto, ahora tienes que crear latabla de la persona individual antes de insertarla en la tabla del conjunto de personas

local persona = {}

luego define las variables de la persona a insertar asi:

persona.edad = bla bla bla

persona.sexo = bla bla bla

y al ultimo insertas la tabla de la persona individual a la tabla del conjunto:

table.insert(personas,persona)

y listo¡¡

Aqui te va el ejemplo completo:

personas = {} --- Tabla del conjunto de personas
 
function añadirPersona(nombre, edad, sexo)
 
individuo = {} -- Inicimaos la tabla interna del individuo (en variable local para noafectar otras variables)
 
individuo.nombre = nombre
individuo.edad = edad
individuo.sexo = sexo
 
table.insert(personas,individuo) --- Insertamos la tabla
 
end

Espero te sirva, y disculpa cualquier falta ortogrfica o de codigo, escribi con prisa esto

saludos¡¡


Gracias!

Y si por ejemplo quiero nombrar la tabla desde la función... es decir, en vez de "individuo", llamarle como yo quiera (en un argumento de la función):

personas = {} --- Tabla del conjunto de personas
 
function añadirPersona(nombrepersona,nombre, edad, sexo)
 
nombrepersona = {} -- Iniciamos la tabla interna del individuo (en variable local para noafectar otras variables)
 
nombrepersona.nombre = nombre
nombrepersona.edad = edad
nombrepersona.sexo = sexo
 
table.insert(personas,individuo) --- Insertamos la tabla
 
end

Eso serviría??


 

 

No

Aunque sirviera, no obtendrías el resultado que buscas, porque cuando insertas una tabla con table.insert, no se inserta como una variable, sino con un índice numérico.

No sé si me expliqué, pero aquí va la explicación de costumbre:

--Tu me imagino quieres este resultado:
  tabla ={
     tablaCreada = {nombre =""....},
     tablaCreada2 = {nombre =""....}
  }
 
--Pero con table.insert obtendrás esto:
  tabla={
    {nombre =""....},
    {nombre =""....}
}     

Hay una solución muy, muy simple:

personas = {} --- Tabla del conjunto de personas
 
function añadirPersona(nombrepersona,name, age, sex)
 
personas[nombrepersona] = {} -- Iniciamos la tabla interna del individuo, directamente
 
personas[nombrepersona].nombre = name
personas[nombrepersona].edad = age
personas[nombrepersona].sexo = sex
 
--Me paso por el f#$$# el table.insert xD
 
end
 
--Nota: cambié el nombre de las variables, de ser iguales a los campos de la tabla causarían error creo (eso ya no lo probé, pero por si las moscas xD)

Y sin usar table.insert ^^

Y en...

[nombrepersona] iría un nombre cualquiera o un valor numérico??

Como gustes, puede ser

Como gustes, puede ser numérico o un string.

mmmm...

Eso me gusta ya más... a ver, voy a probar...

EDITO: FUNCIONA DE 10 ;D

Gracias, Rober.

Imagen de User170294

La unica solución posible es

La unica solución posible es crear de antemano el número de tablas que vás a necesitar. O igual exista otra manera, pero yo la desconozco.


Eso es justo lo que he pensado yo...

Es un poco "molestia" para mí, pero si no hay más remedio...

Imagen de User170294

Te sugiero que le preguntes a

Te sugiero que le preguntes a Chimecho que entiende bastante de este tipo de problemas. Igual saber un poco sobre la tabla global g te ayudaría. Investigaré un poco...


Imagen de barney77

No se si esto funcione( estoy

No se si esto funcione( estoy en el móvil ), prueba así:

personas = {};

function creatabla(tabla,nuevatabla)

tabla.nuevatabla = {};

end

while true do

creatabla(personas,edad);

--Code

screen.flip();

end

Insisto no se si funcione, estoy desde el móvil y no puedo testearlo, pero pues podrías probar :P.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.