变体

变量保存的值可能会在扩展执行期间发生变化。由于动态键入,任何变量都可以保存任何类型的值。变量没有类型声明。相反,变量的类型是在运行时确定的。实际上,变量值的类型可能会在执行过程中发生变化,尽管不建议这样做。变量的初始值为 nil。

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

全局变量

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

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

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

局部变量

可以将变量声明为语句块的局部变量,例如函数。这是通过局部变量名称完成的。变量的作用域将限定在块内,也就是说,它只存在于块中。局部声明可以选择为变量赋值。

示例:

local headers = {} local combined_headers = {}

变体