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 |
---|---|
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 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 | ^ | Exponentiation |
4 | * / % | Multiplication, division, and modulo |
5 | + - | Addition and subtraction |
6 | == != | Comparison operators |
< <= | ||
> >= | ||
=~ !~ | ||
7 | not | Unary logical operator |
exists | Null check operator | |
8 | and | Logical AND |
9 | or | Logical OR |
10 | if then else | Conditional |