Lua es un lenguaje dinámico y las funciones son solo un tipo de valor que se puede llamar con el operador ()
. Entonces, realmente no necesita reenviar declarar la función tanto como asegurarse de que la variable en el alcance cuando la llama es la variable que cree que es.
Esto no es un problema en absoluto para las variables globales que contienen funciones, ya que el entorno global es el lugar predeterminado para buscar resolver un nombre de variable. Sin embargo, para las funciones locales, debe asegurarse de que la variable local ya está en el alcance en el punto léxico donde necesita llamar al valor que almacena, y también asegurarse de que en tiempo de ejecución realmente contenga un valor que se pueda llamar .
Por ejemplo, aquí es un par de funciones locales mutuamente recursivos:
local a,b
a = function() return b() end
b = function() return a() end
Por supuesto, es también un ejemplo de la utilización de cola de llamadas para permitir la repetición infinita que no hace nada, pero el punto aquí es el declaraciones Al declarar las variables con local
antes de que cualquiera tenga una función almacenada en él, se sabe que esos nombres son variables locales en el alcance léxico del resto del ejemplo. Entonces las dos funciones se almacenan, cada una refiriéndose a la otra variable.
Bien, gracias. Pude resolverlo por mi cuenta, pero esta respuesta fue útil, no obstante. –