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 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看