変数

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

変数名は識別子であるため、文字、数字、およびアンダースコアが数字で始まらない文字列です。例:ヘッダー、結合ヘッダー。

グローバル変数

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

拡張モジュールでグローバル変数を使用すると、実行時エラーが発生します。 /var/log/ns.logで報告されたグローバル変数を更新または作成しようとします。

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

局所変数

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

例:

local headers = {} local combined_headers = {}

変数