Flux语言中的运算符
Flux 包含以下类型的操作符:
另请参见:
算术运算符
算术运算符接受两个数值(可以是字面量或变量),并执行一个返回单个数值的计算。
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 1 + 1 | 2 |
- | 减法 | 3 - 2 | 1 |
* | 乘法 | 2 * 3 | 6 |
/ | 除法 | 9 / 3 | 3 |
^ | 指数运算 | 2 ^ 3 | 8 |
% | 取模 | 10 % 5 | 0 |
在当前版本的Flux中,用于算术运算的值必须是相同的数值类型(整数或浮点数)。不同数值类型的值进行运算将导致类型错误。
比较运算符
比较运算符比较表达式,并根据比较结果返回真或假。
| 操作符 | 描述 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | "abc" == "abc" | true |
!= | 不等于 | "abc" != "def" | true |
< | 小于 | 1 < 2 | true |
> | 大于 | 1 > 2 | false |
<= | 小于或等于 | 1 <= 2 | true |
>= | 大于或等于 | 1 >= 2 | false |
=~ | 等于正则表达式 | "abc" =~ /[a-z]*/ | true |
!~ | 不等于正则表达式 | "abc" !~ /[0-9]*/ | true |
">" 和 "<" 运算符也 比较字符串的字典顺序。
逻辑运算符
| 操作符 | 描述 |
|---|---|
not | 如果右操作数为 false,则返回 true。否则,返回 false。 |
exists | 如果右操作数为 null,则返回 false。否则,返回 true。 |
and | 如果两个操作数都为真,则返回 true。否则,返回 false。 |
or | 如果任何操作数为真,则返回 true。否则,返回 false。 |
短路求值
Flux 逻辑运算符观察到其他编程语言中的短路行为。左操作数 (LH) 的计算决定了右操作数 (RH) 是否被计算。
- 当操作符是
and并且左操作数的值为false时,结果返回false而不评估右操作数。 - 当运算符为
or且左侧操作数的值为true时,评估结果返回true而不需要评估右侧操作数。
赋值运算符
赋值运算符根据其右操作数的值将一个值赋给左操作数。
| 运算符 | 描述 | 示例 | 含义 |
|---|---|---|---|
= | 将左侧表达式的值赋给右侧表达式 | x = y | x = y |
函数运算符
函数运算符促进了函数的创建并控制数据通过操作的流动。
| 操作符 | 描述 | 示例 | 意义 |
|---|---|---|---|
|> | 管道转发 | data |> function() | “data”变量中的表格被传递到函数中。 |
<- | 管道接收 | tables=<- | “tables”变量或参数被分配为传送到操作的数据。该运算符用于传递给函数的任何数据类型;不仅仅是表格数据。 |
=> | 箭头 | (r) => r.tag1 == "tagvalue" | 箭头将一个记录或参数传递给函数操作。 |
() | 函数调用 | top(n:10) | 调用 top 函数,设置 n 参数为 10 并执行相关操作。 |
请参阅 定义自定义函数 以获取函数运算符使用的示例。
字符串运算符
字符串操作符连接或比较字符串值。
| 操作符 | 描述 | 示例 | 结果 |
|---|---|---|---|
+ | 连接 | "ab" + "c" | "abc" |
< | 在字典顺序中小于 | "ant" < "bee" | true |
> | 在字典序中大于 | "ant" > "bee" | false |
字面量构造函数
字面构造函数定义固定值。
| 操作符 | 描述 |
|---|---|
[ ] | 列表 / 数组 |
{ } | 记录 |
"" | 字符串 |
杂项运算符
| 操作符 | 描述 | 示例 |
|---|---|---|
( ) | 逻辑分组 | r._value / (r._value * 2) |
, | 序列分隔符 | item1, item2, item3 |
: | 键值分隔符 | {name: "Bob"} |
. | 成员访问 / 点引用 | r._measurement |
运算符优先级
下表列出了运算符优先级。
数字较低的运算符具有较高的优先级。
| 优先级 | 运算符 | 描述 |
|---|---|---|
| 1 | a() | 函数调用 |
a[] | 成员或索引访问 | |
. | 成员访问 | |
| 2 | |> | 管道转发 |
| 3 | () => 1 | 函数字面量 |
| 4 | ^ | 指数运算 |
| 5 | * / % | 乘法、除法和取模 |
| 6 | + - | 加法和减法 |
| 7 | == != | 比较运算符 |
< <= | ||
> >= | ||
=~ !~ | ||
| 8 | not | 一元逻辑运算符 |
exists | 空检查运算符 | |
| 9 | and | 逻辑与 |
| 10 | or | 逻辑或 |
| 11 | if then else | 条件 |