変数

変数は、拡張機能の実行中に変更される可能性のある値を保持します。動的型付けのため、どの変数にも任意の型の値を保持できます。変数には型宣言はありません。代わりに、変数のタイプは実行時に決定されます。実際、変数の値の型は実行中に変わる可能性がありますが、これはお勧めできません。変数の初期値は nil です。

変数名は識別子であり、数字で始まらない文字、数字、アンダースコアも識別子です。例:ヘッダー、結合ヘッダー。

グローバル変数

Lua では、特に宣言されていない変数はプログラム内でグローバルです。ただし、グローバル変数はポリシー拡張関数では使用できません。これは、関数を実行できるパケットエンジンが複数あり、各パケットエンジンには独自のメモリがあるためです。

エクステンションでグローバル変数を使用すると、実行時エラーが発生します。 /var/log/ns.logで報告されたグローバル変数を更新または作成しようとしたときです。

変数名の入力ミスは潜在的な問題となります。なぜなら、タイプミスがある変数は別のグローバル変数として解釈され、C や Java のような言語のように構文エラーを引き起こすことはないからです。前述のように、代わりにランタイムエラーが発生します。

ローカル変数

変数は、関数などのステートメントのブロックに対してローカルであると宣言できます。これはローカル変数名によって行われます。変数はブロックにスコープされます。つまり、変数はブロック内にのみ存在します。ローカル宣言は、オプションで変数に値を割り当てることができます。

例:

ローカルヘッダー = {} ローカル複合ヘッダー = {}

変数