Documentation

赋值和范围

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

Flux使用块进行词法范围界定:

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

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

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

变量赋值

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

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 .

选项赋值创建一个与标识符绑定的选项,并赋予它一个类型和一个值。 选项只能在包块中赋值。 一旦声明,选项在同一个包块中不得重新声明。 在一个包中声明的选项可以在另一个包中重新赋值。 选项在其生命周期的剩余时间内保持相同的类型。

示例
// 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 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: