nix-super/doc/manual/src/expressions/language-operators.md
2020-07-24 14:31:33 +02:00

7.3 KiB
Raw Blame History

Operators

The table below lists the operators in the Nix expression language, in order of precedence (from strongest to weakest binding).

Name Syntax Associativity Description Precedence
Select e . attrpath [ or def ] none Select attribute denoted by the attribute path attrpath from set e. (An attribute path is a dot-separated list of attribute names.) If the attribute doesnt exist, return def if provided, otherwise abort evaluation. 1
Application e1 e2 left Call function e1 with argument e2. 2
Arithmetic Negation - e none Arithmetic negation. 3
Has Attribute e ? attrpath none Test whether set e contains the attribute denoted by attrpath; return true or false. 4
List Concatenation e1 ++ e2 right List concatenation. 5
Multiplication e1 * e2, left Arithmetic multiplication. 6
Division e1 / e2 left Arithmetic division. 6
Addition e1 + e2 left Arithmetic addition. 7
Subtraction e1 - e2 left Arithmetic subtraction. 7
String Concatenation string1 + string2 left String concatenation. 7
Not ! e none Boolean negation. 8
Update e1 // e2 right Return a set consisting of the attributes in e1 and e2 (with the latter taking precedence over the former in case of equally named attributes). 9
Less Than e1 < e2, none Arithmetic comparison. 10
Less Than or Equal To e1 <= e2 none Arithmetic comparison. 10
Greater Than e1 > e2 none Arithmetic comparison. 10
Greater Than or Equal To e1 >= e2 none Arithmetic comparison. 10
Equality e1 == e2 none Equality. 11
Inequality e1 != e2 none Inequality. 11
Logical AND e1 && e2 left Logical AND. 12
Logical OR e1 || e2 left Logical OR. 13
Logical Implication e1 -> e2 none Logical implication (equivalent to `!e1 |\
e2`). 14