Variablen

Variablen enthalten Werte, die sich während der Ausführung der Erweiterung ändern können. Aufgrund der dynamischen Typisierung kann jede Variable Werte eines beliebigen Typs enthalten. Es gibt keine Typdeklarationen für Variablen. Stattdessen wird der Typ einer Variablen zur Laufzeit bestimmt. Tatsächlich kann sich der Typ des Werts einer Variablen während der Ausführung ändern, obwohl dies keine empfohlene Vorgehensweise ist. Eine Variable hat anfangs den Wert nil.

Variablennamen sind Bezeichner, ebenso wie Zeichenketten aus Buchstaben, Ziffern und Unterstrichen, die nicht mit einer Ziffer beginnen. Beispiele: headers, combined_headers.

Globale Variablen

In Lua sind Variablen, die nicht anderweitig deklariert sind, innerhalb des Programms global. Globale Variablen sind in Funktionen zur Richtlinienerweiterung jedoch nicht zulässig, da es mehrere Packet Engines gibt, in denen eine Funktion ausgeführt werden kann, und jede Packet Engine über ihren eigenen Speicher verfügt.

Wenn Sie eine globale Variable in Ihrer Erweiterung verwenden, erhalten Sie einen Laufzeitfehler: versuchen Sie, einen globalen Bericht in /var/log/ns.logzu aktualisieren oder zu erstellen.

Tippfehler in Variablennamen sind ein potenzielles Problem, da die Variable mit dem Tippfehler als eine andere, globale Variable interpretiert wird und keinen Syntaxfehler verursacht wie in Sprachen wie C oder Java. Wie oben erwähnt, erhalten Sie stattdessen einen Laufzeitfehler.

Lokale Variablen

Eine Variable kann als lokal für einen Block von Anweisungen deklariert werden, z. B. für eine Funktion. Dies erfolgt durch den lokalen Variablennamen. Die Variable wird auf den Block beschränkt, das heißt, sie existiert nur innerhalb des Blocks. Die lokale Deklaration kann der Variablen optional einen Wert zuweisen.

Beispiele:

lokale Header = {} local combined_headers = {}

Variablen