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.

Recorre una función y almacénala como lista.

Tengo la siguiente función que hace clic en una casilla de verificación con splash:

local get_dimensions = splash:jsfunc([[
    function () {
        for i=1, 5 do
            var rect = document.querySelector(string.format('checkbox[number="%d"]', i))
                .getClientRects()[0];
            return {[rect.left]: rect.top};
        }
    }]
)

Sin embargo, no puedo almacenar una lista del bucle en una única variable como rect, entonces ¿cómo puedo almacenar una lista en una variable y cuando la devuelva, debería devolver una lista de valores?

Algo similar a Python, es decir:

def stuff():
    rect = []
    for i in range(5):
        rect.append([...])
    return rect
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para almacenar una lista de valores del bucle en la función Lua, puedes crear una tabla vacía antes del bucle y agregar cada valor a la tabla usando la función table.insert(). Aquí tienes un ejemplo:

    local get_dimensions = splash:jsfunc([[
            function () {
                var rects = {};
                for (var i = 1; i <= 5; i++) {
                    var rect = document.querySelector('checkbox[number="' + i + '"]').getClientRects()[0];
                    table.insert(rects, {rect.left, rect.top});
                }
                return rects;
            }
        ]])
    

    En esta función modificada, creamos una tabla vacía llamada rects antes del bucle. Dentro del bucle, usamos table.insert() para agregar una nueva tabla que contiene los valores left y top del checkbox actual a rects. Finalmente, retornamos la tabla rects que contiene todas las dimensiones de los checkboxes.

Comments are closed.