Lua - lokale erforderliche Zeit, in der eine lokale Variable zugewiesen ist?

8

Ich habe einen seltsamen Code in der Lua-Dokumentation gefunden:

%Vor%

Warum wird local noch einmal mit i1 und i2 verwendet? Sind sie nicht bereits unter lokalen Variablen deklariert? Müssen Sie das local Schlüsselwort jedes Mal wiederholen, wenn Sie es zuweisen möchten?

    
Virus721 02.03.2016, 09:07
quelle

2 Antworten

7

Nein, es ist nicht notwendig, local immer wieder zu verwenden. Die Variablen i1 und i2 werden wegen der ersten Zeile selbst im Bereich der Funktion local sein.

Obwohl es nicht gemacht werden sollte, ist es nicht falsch, dieselben Variablen immer wieder zu definieren. Es wird nur eine neue Position im Stapel dem neueren und Schatten dem älteren zuweisen.

Das Folgende ist die Befehlsausgabe für eine einfache Funktion:

%Vor% %Vor%

und Aktualisieren der zweiten local i = 3 auf nur i = 3 :

%Vor% %Vor%

Beachten Sie den Unterschied bei der zweiten Anweisung.

Abgesehen davon ist die Funktion ziemlich ineffizient. Sie können stattdessen Folgendes verwenden:

%Vor%     
hjpotter92 02.03.2016, 09:15
quelle
5

Technisch ist die Verwendung von local oder nicht in der zweiten Deklaration nicht gleichwertig. Die Verwendung einer zweiten local würde eine andere Variable deklarieren.

In Ihrem Beispielcode haben sie jedoch grundsätzlich das gleiche. Überprüfen Sie diesen einfacheren Code:

%Vor%

und

%Vor%

Verwenden Sie luac -p -l gibt das folgende Ergebnis aus:

%Vor%

und

%Vor%     
Yu Hao 02.03.2016 09:26
quelle

Tags und Links