文档文档

赋值和作用域

赋值操作将标识符绑定到变量、选项或函数。程序中的每个标识符都必须被赋值。

Flux 使用代码块进行词法作用域划分

  1. 预分配标识符的作用域在 universe 代码块中。
  2. 表示顶级(任何函数外部)变量、选项或函数的标识符的作用域是 package 代码块。
  3. 导入包的名称的作用域是包含导入声明的文件的 file 代码块。
  4. 表示函数参数的标识符的作用域是函数体。
  5. 在函数内部赋值的标识符的作用域是最近的包含代码块。

在一个代码块中赋值的标识符可以在内部代码块中重新赋值,选项标识符除外。当内部赋值的标识符在作用域内时,它表示由内部赋值操作赋予的实体。

请注意,package 子句不是赋值操作。包名称不会出现在任何作用域中。它的目的是标识属于同一包的文件,并为导入声明指定默认包名称。

变量赋值

变量赋值创建一个绑定到标识符的变量,并为其赋予类型和值。变量在其生命周期内保持相同的类型和值。在一个代码块中赋值给变量的标识符不能在同一代码块中重新赋值。标识符可以在内部代码块中重新赋值或被覆盖。

VariableAssignment = identifier "=" Expression .
变量赋值示例

在此代码片段中,nm 在外部代码块中定义为整数。在匿名函数中,nm 定义为字符串,但仅在该作用域内有效。因此,虽然该函数将返回 "ab",但外部作用域中的 nm 保持不变,仍然是 n = 1m = 2

n = 1
m = 2
x = 5.4
f = () => {
    n = "a"
    m = "b"
    return n + m
}

选项赋值

OptionAssignment = "option" [ identifier "." ] identifier "=" Expression .

选项赋值创建一个绑定到标识符的选项,并为其赋予类型和值。选项只能在 package 代码块中赋值。一旦声明,选项就不能在同一 package 代码块中重新声明。在一个包中声明的选项可以在另一个包中重新赋值新值。选项在其生命周期内保持相同的类型。

示例
// alert package
option severity = ["low", "moderate", "high"]
// foo package
import "alert"
option alert.severity = ["low", "critical"]  // qualified option
option n = 1
option n = 2
f = (a, b) => a + b + n
x = f(a:1, b:1) // x = 4

此页内容是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建于 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩功能,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看