Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
Operators
The Alloy configuration syntax uses a standard set of operators. All operations follow the PEMDAS order of mathematical operations.
Arithmetic operators
| Operator | Description | 
|---|---|
| + | Adds two numbers. | 
| - | Subtracts two numbers. | 
| * | Multiplies two numbers. | 
| / | Divides two numbers. | 
| % | Computes the remainder after dividing two numbers. | 
| ^ | Raises a number to the specified power. | 
String operators
| Operator | Description | 
|---|---|
| + | Concatenate two strings or two secrets, or a string and a secret. | 
Comparison operators
| Operator | Description | 
|---|---|
| == | Returns truewhen two values are equal. | 
| != | Returns truewhen two values aren’t equal. | 
| < | Returns truewhen the left value is less than the right value. | 
| <= | Returns truewhen the left value is less than or equal to the right value. | 
| > | Returns truewhen the left value is greater than the right value. | 
| >= | Returns truewhen the left value is greater than or equal to the right value. | 
You can use the equality operators == and != with any operands.
The operands in ordering operators <, <=, >, and >= must be orderable and of the same type.
The results of these comparisons are:
- Boolean values are equal if both are either trueorfalse.
- Numerical (integer and floating-point) values are ordered in the usual way.
- String values are ordered lexically, byte-wise.
- Objects are equal if all their fields are equal.
- Arrays are equal if their corresponding elements are equal.
Logical operators
| Operator | Description | 
|---|---|
| && | Returns truewhen both the left and right values aretrue. | 
| || | Returns truewhen either the left or right value istrue. | 
| ! | Negates a boolean value. | 
Logical operators work with boolean values and return a boolean result.
Assignment operator
The Alloy configuration syntax uses = as the assignment operator.
An assignment statement can only assign a single value. Each value must be assignable to the attribute or object key.
- You can assign nullto any attribute.
- You can assign numerical, string, boolean, array, function, capsule, and object types to attributes of the corresponding type.
- You can assign numbers to string attributes with an implicit conversion.
- You can assign strings to numerical attributes if they represent a number.
- You can’t assign blocks.
Brackets
| Brackets | Description | 
|---|---|
| { } | Define blocks and objects. | 
| ( ) | Group and prioritize expressions. | 
| [ ] | Define arrays. | 
For example, the following code uses curly braces and square brackets to define an object and an array.
obj = { app = "alloy", namespace = "dev" }
arr = [1, true, 7 * (1+1), 3]Access operators
| Operator | Description | 
|---|---|
| [ ] | Access a member of an array or object. | 
| . | Access a named member of an object or an exported field of a component. | 
You can use the Alloy access operators to retrieve nested values. Use square brackets to access zero-indexed array elements or object fields by enclosing the field name in double quotes. Use the dot operator to access object fields without double quotes or component exports.
obj["app"]
arr[1]
obj.app
local.file.token.contentIf you use the [ ] operator to access a non-existent object member, the result is null.
If you use the . operator to access a non-existent named member of an object, an error occurs.







