变体

变量保存在扩展执行期间可能会更改的值。由于动态类型,任何变量都可能包含任何类型的值。变量没有类型声明。相反,变量的类型是在运行时确定的。事实上,变量值的类型可能会在执行过程中发生变化,尽管这不是推荐的做法。一个变量最初的值为零。

变量名称是标识符,字母、数字和下划线的字符串也不是以数字开头。示例:headers, combined_headers。

全局变量

在 Lua 中,未声明的变量在程序中是全局的。但是,策略扩展函数中不允许全局变量,因为有多个数据包引擎可以执行一个函数,并且每个数据包引擎都有自己的内存。

如果您在扩展中使用全局变量,则会出现运行时错误:尝试更新或创建在 /var/log/ns.log中报告的全局变量。

变量名称中的错字是一个潜在的问题,因为带有错字的变量将被解释为另一个全局变量,并且不会像 C 或 Java 这样的语言那样导致语法错误。如上所述,您将收到运行时错误。

局部变量

变量可以声明为语句块的本地变量,例如函数。这是由本地变量名称完成的。变量将作用域为块,也就是说,它只存在于块中。本地声明可以选择为变量分配一个值。

示例:

local headers = {} local combined_headers = {}

变体