Zum Inhalt

Deklaration und Bereich von Variablen

Obwohl es in Lua nicht erforderlich ist, die Typen explizit zu definieren, ist es dennoch ratsam, Variablen vor der Verwendung zu deklarieren. Lokale Variablen werden mit dem Schlüsselwort local deklariert, entweder mit oder ohne eine begleitenden Zuweisung. Wird eine Variable nicht mit local deklariert, so wird diese als global aufgefasst. Das bedeutet, dass diese in anderen Teilen des Programms sichtbar ist (und überschrieben werden kann). Dies kann zu unerwarteten Ergebnissen führen, vor allem dann, wenn Code mit Copy&Paste übertragen oder Schleifenkonstrukte verwendet werden. Auch können Library-Funktionen überschrieben werden, die dann in diesem Lua-Script unzugänglich wären.

Es wird daher empfohlen, den Typ 'local' für jede Variable zu verwenden. Um Variablen, die über das ganze Skript hinweg zugänglich sein sollen zu definieren, geben Sie diese als local ein und stellen Sie die Deklarationen an den Dateianfang.

local height 
height = 10

local base_area = 30
local area = 1/3 * base_area * height

local i
for i=1,100 do
    local p = math.sqrt(i)
    cna.print(p)
end

cna.print(p) -- error.

Die als local deklarierten Variablen sind nur in dem Block "sichtbar", in dem sie deklariert wurden. Im ersten Beispiel ist p nur innerhalb der for-Schleife sichtbar, daher geht der Aufruf cna.print(p) in der letzten Zeile fehl. Im nächsten Beispiel wurde die Deklaration in den äußeren Bereich verschoben. Deshalb kann sie auch mit cna.print(p)in der letzten Zeile erreicht werden.

local i
local p
for i=1,100 do
    p = math.sqrt(i)
    cna.print(p)
end
cna.print(p) -- 10