Lua è un linguaggio dinamico e le funzioni sono solo un tipo di valore che può essere chiamato con l'operatore ()
. Quindi non hai davvero bisogno di inoltrare la funzione dichiarare così tanto che assicurati che la variabile di scope quando la chiami sia la variabile che pensi sia.
Questo non è affatto un problema per le variabili globali che contengono funzioni, poiché l'ambiente globale è il luogo predefinito in cui cercare di risolvere un nome di variabile. Per le funzioni locali, tuttavia, è necessario assicurarsi che la variabile locale sia già in ambito nel punto lessicale in cui è necessario chiamare il valore memorizzato e assicurarsi inoltre che in fase di esecuzione sia effettivamente in possesso di un valore che può essere chiamato .
Ad esempio, ecco una coppia di funzioni locali mutuamente ricorsive:
local a,b
a = function() return b() end
b = function() return a() end
Naturalmente, che è anche un esempio di utilizzo coda chiamate a consentire ricorsione infinita che non fa nulla, ma il punto qui è il dichiarazioni. Dichiarando le variabili con local
prima di avere una funzione memorizzata in esso, tali nomi sono noti per essere variabili locali in ambito lessicale del resto dell'esempio. Quindi vengono memorizzate le due funzioni, ciascuna riferita all'altra variabile.
Ok, grazie. Sono riuscito a capirlo da solo, ma questa risposta è stata comunque utile. –