Variablen

Variablen enthalten Werte, die sich während der Ausführung der Erweiterung ändern können. Aufgrund der dynamischen Eingabe kann jede Variable Werte jedes 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 anfänglich den Wert nil.

Variablennamen sind Bezeichner, also Zeichenfolgen aus Buchstaben, Ziffern und Unterstrichen, die nicht in einer Ziffer beginnen. Beispiele: Header, combined_headers.

Globale Variablen

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

Wenn Sie eine globale Variable in Ihrer Erweiterung verwenden, erhalten Sie einen Laufzeitfehler: Versuchen Sie, eine in /var/log/ns.loggemeldete globale Variable zu 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 Sprache wie C oder Java. Wie oben erwähnt, erhalten Sie stattdessen einen Laufzeitfehler.

Lokale Variablen

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

Beispiele:

local headers = {} local combined_headers = {}