Operators in the Flux language
Flux includes the following types of operators:
- Arithmetic operators
- Comparison operators
- Logical operators
- Assignment operators
- Function operators
- String Operators
- Literal constructors
- Miscellaneous operators
Also see:
Arithmetic operators
Arithmetic operators take two numerical values (either literals or variables) and perform a calculation that returns a single numerical value.
Operator | Description | Example | Result |
---|---|---|---|
+ | Addition | 1 + 1 | 2 |
- | Subtraction | 3 - 2 | 1 |
* | Multiplication | 2 * 3 | 6 |
/ | Division | 9 / 3 | 3 |
^ | Exponentiation | 2 ^ 3 | 8 |
% | Modulo | 10 % 5 | 0 |
In the current version of Flux, values used in arithmetic operations must be of the same numeric type (integer or float). Operations with values of different numeric types will result in a type error.
Comparison operators
Comparison operators compare expressions and return true or false based on the comparison.
Operator | Description | Example | Result |
---|---|---|---|
== | Equal to | "abc" == "abc" | true |
!= | Not equal to | "abc" != "def" | true |
< | Less than | 1 < 2 | true |
> | Greater than | 1 > 2 | false |
<= | Less than or equal | 1 <= 2 | true |
>= | Greater than or equal | 1 >= 2 | false |
=~ | Equal to regular expression | "abc" =~ /[a-z]*/ | true |
!~ | Not equal to regular expression | "abc" !~ /[0-9]*/ | true |
The >
and <
operators also compare the lexicographic order of strings.
Logical operators
Operator | Description |
---|---|
not | Returns true if right operand is false . Otherwise, returns false . |
exists | Returns false if right operand is null. Otherwise, returns true . |
and | Returns true if both operands are true. Otherwise, returns false . |
or | Returns true if any operand is true. Otherwise, returns false . |
Short-circuit evaluation
Flux logical operators observe the short-circuiting behavior seen in other programming languages. The evaluation of the left-hand (LH) operand determines if the right-hand (RH) operand is evaluated.
- When the operator is
and
and the LH operand evaluates tofalse
, the evaluation returnsfalse
without evaluating the RH operand. - When the operator is
or
and the LH operand evaluates totrue
, the evaluation returnstrue
without evaluating the RH operand.
Assignment operators
An assignment operator assigns a value to its left operand based on the value of its right operand.
Operator | Description | Example | Meaning |
---|---|---|---|
= | Assign value of left expression to right expression | x = y | x = y |
Function operators
Function operators facilitate the creation of functions and control the flow of data through operations.
Operator | Description | Examples | Meaning |
---|---|---|---|
|> | Pipe‑forward | data |> function() | Tables contained in the “data” variable are piped into the function. |
<- | Pipe‑receive | tables=<- | The “tables” variable or parameter is assigned to data piped into the operation. This operator is used for any data type passed into a function; not just table data. |
=> | Arrow | (r) => r.tag1 == "tagvalue" | The arrow passes a record or parameters into function operations. |
() | Function call | top(n:10) | Call the top function setting the n parameter to 10 and perform the associated operations. |
See Define custom functions for examples of function operators is use.
String Operators
String operators concatenate or compare string values.
Operator | Description | Examples | Result |
---|---|---|---|
+ | Concatenation | "ab" + "c" | "abc" |
< | Less than in lexicographic order | "ant" < "bee" | true |
> | Greater than in lexicographic order | "ant" > "bee" | false |
Literal constructors
Literal constructors define fixed values.
Operator | Description |
---|---|
[ ] | List / array |
{ } | Record |
"" | String |
Miscellaneous operators
Operator | Description | Example |
---|---|---|
( ) | Logical grouping | r._value / (r._value * 2) |
, | Sequence delimiter | item1, item2, item3 |
: | Key-value separator | {name: "Bob"} |
. | Member access / dot reference | r._measurement |
Operator precedence
The table below outlines operator precedence. Operators with a lower number have higher precedence.
Precedence | Operator | Description |
---|---|---|
1 | a() | Function call |
a[] | Member or index access | |
. | Member access | |
2 | |> | Pipe forward |
3 | () => 1 | FunctionLiteral |
4 | ^ | Exponentiation |
5 | * / % | Multiplication, division, and modulo |
6 | + - | Addition and subtraction |
7 | == != | Comparison operators |
< <= | ||
> >= | ||
=~ !~ | ||
8 | not | Unary logical operator |
exists | Null check operator | |
9 | and | Logical AND |
10 | or | Logical OR |
11 | if then else | Conditional |
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for Flux and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.