Documentation

软件包

Flux 源代码被组织成包。
一个包包含一个或多个源文件。
每个源文件被单独解析并组合成一个单一的包。

File = [ PackageClause ] [ ImportList ] StatementList .
ImportList = { ImportDeclaration } .

包语句

PackageClause = [ Attributes ] "package" identifier .

一个 包声明 定义当前包的名称。
包名称必须是有效的 Flux 标识符。
包声明必须位于任何 Flux 源文件的开头。
在同一包中的所有文件必须声明相同的包名称。
当一个文件没有声明包声明时,该文件中的所有标识符将属于特殊的 main 包。

主包

main 包是特殊的,原因有几点:

  1. 它定义了一个 Flux 程序的入口点。
  2. 无法导入。
  3. 所有语句都被标记为产生副作用。

导入声明

ImportDeclaration = [ Attributes ] "import" [identifier] string_lit

每个包都关联有一个包名称和一个导入路径。 导入语句获取一个包的导入路径,并将该包中定义的所有标识符引入当前作用域下的命名空间。 导入语句定义了访问导入标识符的命名空间。 默认情况下,该命名空间的标识符是包名称,除非另有指定。 例如,给定在包 foo 中声明的变量 x,导入 foo 并引用 x 将看起来像这样:

import "import/path/to/package/foo"

foo.x

或者这个:

import bar "import/path/to/package/foo"

bar.x

包的导入路径始终是绝对的。
包可以为它所导入的某个包中声明的选项标识符重新赋值。
包无法访问或修改属于其导入包的被导入包的标识符。
每个包含在导入包中的语句都会被评估。

包初始化

软件包按以下顺序初始化:

  1. 所有导入的包都已初始化并分配给它们的包标识符。
  2. 所有选项声明都会被评估并分配,无论顺序如何。 一个选项不能依赖于在同一个包块中分配的另一个选项。
  3. 所有变量声明都会被评估和赋值,顺序无关。一个变量不能对自身有直接或间接的依赖。
  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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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