es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de recursión inesperado en Lua.

Estoy tratando de entender por qué esta función está ignorando la tabla más central. Supongo que estoy pasando por alto algo simple.

Aquí está el código:

tbl = {
    name = "primera tabla";
    tbl = {
        name = "tabla del medio";
        tbl = {
            name = "última tabla";
        };
    };
}

sayName = function(tbl)
    print(tbl.name)
    if tbl.tbl ~= nil then
        for _,v in pairs(tbl.tbl) do
            sayName(v)    
        end;
    end;
end;

sayName(tbl)

Output>

primera tabla
última tabla
nil
Tags:  ,

Answer

  1. Avatar for davy.ai

    Al observar el código, parece que la función no está ignorando la tabla intermedia, sino que está recorriendo correctamente todas las tablas dentro de la tabla principal. La salida muestra que la función primero imprime el nombre de la tabla principal “primera tabla”, luego pasa a imprimir el nombre de la última tabla anidada “última tabla” y finalmente imprime “nil” ya que no hay más tablas para recorrer.

    Es posible que haya habido una confusión o una expectativa de que la función también imprima el nombre de la tabla intermedia, pero la implementación actual no tiene esa funcionalidad. Si el objetivo es imprimir el nombre de todas las tablas anidadas, la función se puede modificar en consecuencia.

Comments are closed.