Documentation

类型

类型 定义了一组值及其操作。类型从不作为语法的一部分显式声明,除了作为内置语句的一部分。类型总是从值的使用中推断。类型推断遵循亨德利-米尔纳风格的推断系统。

联合类型

联合类型定义了一组类型。 在下面的例子中,联合类型被指定如下:

T = t1 | t2 | ... | tn

其中 t1t2, …, 和 tn 是类型。

在上面的例子中,类型 T 的值可以是类型 t1、类型 t2、… 或类型 tn

基本类型

所有Flux数据类型都是由以下类型构成的:

空类型

空类型表示缺失或未知的值。 空类型的名称是null。 只有一个值构成空类型,那就是null值。 如果类型t可以如下表达,则它是可为空的:

t = {s} | null

其中 {s} 定义了一组值。

布尔类型

A 布尔类型表示一个真值,对应于预先指定的变量 truefalse。 布尔类型的名称是 bool。 布尔类型是可为空的,可以形式上指定如下:

bool = {true, false} | null

数字类型

A 数字类型 代表整数或浮动点值的集合。

以下数字类型存在:

uint    the set of all unsigned 64-bit integers | null
int     the set of all signed 64-bit integers | null
float   the set of all IEEE-754 64-bit floating-point numbers | null

所有数字类型都是可为空的。

时间类型

A 时间类型表示一个具有纳秒精度的单个时间点。 时间类型名称是 time。 时间类型是可空的。

时间戳格式

Flux 支持 RFC3339 时间戳:

  • YYYY-MM-DD
  • YYYY-MM-DDT00:00:00Z
  • YYYY-MM-DDT00:00:00.000Z

持续时间类型

A duration type 表示一个具有纳秒精度的时间长度。 持续时间类型名称是 duration。 持续时间类型是可空的。

持续时间类型的示例
1ns // 1 nanosecond
1us // 1 microsecond
1ms // 1 millisecond
1s  // 1 second
1m  // 1 minute
1h  // 1 hour
1d  // 1 day
1w  // 1 week
1mo // 1 calendar month
1y  // 1 calendar year

3d12h4m25s // 3 days, 12 hours, 4 minutes, and 25 seconds

字符串类型

一个 字符串类型 表示一个可能为空的字符序列。 字符串是不可变的,一旦创建就不能被修改。 字符串类型名称是 string。 字符串类型是可以为null的。

一个空字符串不是一个空值

字节类型

A bytes type 表示一系列字节值。 字节类型名称是 bytes

正则表达式类型

A regular expression type 表示所有正则表达式模式的集合。 正则表达式类型名称是 regexp。 正则表达式类型是 可为空的。

复合类型

这些是由基本类型构造的类型。复合类型不能为null。

数组类型

一个 数组类型 表示任何其他类型值的序列。
数组中的所有值必须是相同类型。
数组的长度是数组中元素的数量。

记录类型

A 记录类型 代表一组无序的键和值对。 键必须始终是一个字符串。 值可以是任何其他类型,且不必与记录内的其他值相同。

记录中的键只能静态引用。

类型推断确定记录中存在的属性。如果类型推断确定了记录中的所有属性,则称其为“有界的”。在记录的类型中,不一定所有的键都是已知的,在这种情况下,记录称为“无界的”。无界记录可能包含任何属性,除了已知包含的属性之外。

字典类型

一个 字典类型 是一个将键与值关联的集合。 键必须是可以比较的并且类型相同。 值也必须是相同类型。

函数类型

一个 函数类型 表示具有相同参数和结果类型的所有函数的集合。 函数的参数总是被命名(没有位置参数)。 因此,实现一个函数类型要求参数的名称相同。

流类型

一个 流类型 代表一个无界的值集合。值必须是记录,并且这些记录只能包含 int、uint、float、string、time 或 bool 类型。

多态

Flux 函数可以是多态的,这意味着一个函数可以应用于不同类型的参数。Flux 支持参数化、多记录和临时多态。

参数多态性

参数多态性是指一个函数可以统一地应用于任何类型的参数。 例如:

f = (x) => x
f(x: 1)
f(x: 1.1)
f(x: "1")
f(x: true)
f(x: f)

add函数的主体中,标识符ab被用作intfloat类型。

记录多态性

记录多态性是指一个函数可以应用于不同类型的记录。 例如:

john = {name:"John", lastName:"Smith"}
jane = {name:"Jane", age:44}

// John and Jane are records with different types.
// We can still define a function that can operate on both records safely.

// name returns the name of a person
name = (person) => person.name

name(person:john) // John
name(person:jane) // Jane

device = {id: 125325, lat: 15.6163, lon: 62.6623}

name(person:device) // Type error, "device" does not have a property name.

不同类型的记录可以被传递给同一个函数,只要它们包含必要的属性。
必要的属性由记录的使用情况决定。

临时多态性

临时多态性是一个概念,指的是一个函数可以应用于不同类型的参数,并根据类型具有不同的行为。

add = (a, b) => a + b

// Integer addition
add(a: 1, b: 1)

// String concatenation
add(a: "str", b: "ing")

// Addition not defined for boolean data types
add(a: true, b: false)

类型约束

类型约束用于实现静态的临时多态性。 例如,下面的函数仅对 Addable 类型定义:

add = (a, b) => a + b

传递一个记录到 add() 会导致编译时类型错误,因为记录是不可相加的。

// Records are not Addable and will result in an error.
add(a: {}, b: {})

约束从未被明确声明,而是从上下文中推断出来的。

可添加约束

可加类型是指二元算术运算符 + 接受的类型。整数、无符号整数、浮点数和字符串类型是 Addable

可减去的约束

可减类型是二元算术运算符 - 可接受的类型。整数、无符号整数和浮点类型是 Subtractable

可被整除约束

可被除的类型是二进制算术运算符 \ 所接受的类型。 整数、无符号整数和浮点数类型是 Divisible

数值约束

整数、无符号整数和浮点类型是 Numeric

可比较约束

可比较类型是指二进制比较运算符 <, <=, >>= 接受的类型。整数、无符号整数、浮点数、字符串、持续时间和时间类型是 Comparable

可等价约束

可比类型是指可以使用 ==!= 运算符进行相等比较的类型。 布尔值、整数、无符号整数、浮点数、字符串、持续时间、时间、字节、数组和记录类型是 Equatable

可为空约束

可空类型是那些可以是 null 的类型。 布尔型、整数型、无符号整数型、浮点型、字符串型、持续时间型和时间型都是 Nullable

记录约束

记录是唯一符合此约束的类型。

可否否定的约束

可否取负的类型是指一元算术运算符 - 所接受的类型。整数、无符号整数、浮点数和持续时间类型是 Negatable

时间约束

持续时间和时间类型是 Timeable

可字符串化约束

可字符串化类型是可以在字符串插值中进行评估和表达的类型。 String, Integer, Uinteger, Float, Boolean, Time 和 Duration 类型都是 Stringable



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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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