Die Hauptmotivation ist wahrscheinlich die Leistung, da der Zugriff auf globale Variablen eine Hashtabellensuche erfordert, während der Zugriff auf lokale Variablen dies nicht tut. Sie sollten jedoch den Unterschied in Ihrem Programm messen. Übertreib es nicht.
Beachten Sie, dass Sie keine anderen Namen verwenden müssen: Sie können local print=print
usw. schreiben, damit der Rest Ihres Programms nicht wirklich wissen muss, ob diese Variablen lokal oder global sind.
Schließlich gibt es einen semantischen Unterschied, wenn Sie den Wert einer globalen Variablen in eine lokale Variable speichern: Sie tun frühe Bindung; Wenn Ihr Programm ein externes Modul aufruft, das dieselbe Funktion verwendet, verwendet es den aktuellen Wert, nicht das eingefrorene, das Sie haben. Mit anderen Worten, spätere Neudefinitionen von zB print
betreffen Sie nicht.
Für eine längere Diskussion der Leistung, lesen Sie Kapitel 2 von Lua Programmming Gems.
Eine weitere Motivation für die Definition lokaler Kopien von allgemeinen Funktionen besteht darin, sie neu zu definieren und dennoch die ursprünglichen Funktionen beizubehalten.
Es ist bemerkenswert, dass dies Trick kann die Leistung in LuaJIT tatsächlich * verletzen *. – Textmode