2018-04-17 15:16:08 -04:00
|
|
|
[[painless-operators]]
|
2017-05-12 19:17:06 -04:00
|
|
|
=== Operators
|
|
|
|
|
Painless: Restructure/Clean Up of Spec Documentation (#31013)
Full restructure of the spec into new sections for operators, statements, scripts, functions, lambdas, and regexes. Split of operators into 6 sections, a table, reference, array, numeric, boolean, and general. Clean up of all operators sections. Sporadic clean up else where.
2018-06-07 20:11:56 -04:00
|
|
|
An operator is the most basic action that can be taken to evaluate values in a
|
|
|
|
script. An expression is one-to-many consecutive operations. Precedence is the
|
|
|
|
order in which an operator will be evaluated relative to another operator.
|
|
|
|
Associativity is the direction within an expression in which a specific operator
|
|
|
|
is evaluated. The following table lists all available operators:
|
|
|
|
|
|
|
|
[cols="<6,<3,^3,^2,^4"]
|
|
|
|
|====
|
|
|
|
| *Operator* | *Category* | *Symbol(s)* | *Precedence* | *Associativity*
|
|
|
|
| <<precedence-operator, Precedence>> | <<painless-operators-general, General>> | () | 0 | left -> right
|
|
|
|
| <<method-call-operator, Method Call>> | <<painless-operators-reference, Reference>> | . () | 1 | left -> right
|
|
|
|
| <<field-access-operator, Field Access>> | <<painless-operators-reference, Reference>> | . | 1 | left -> right
|
|
|
|
| <<null-safe-operator, Null Safe>> | <<painless-operators-reference, Reference>> | ?. | 1 | left -> right
|
|
|
|
| <<function-call-operator, Function Call>> | <<painless-operators-general, General>> | () | 1 | left -> right
|
|
|
|
| <<array-initialization-operator, Array Initialization>> | <<painless-operators-array, Array>> | [] {} | 1 | left -> right
|
|
|
|
| <<array-access-operator, Array Access>> | <<painless-operators-array, Array>> | [] | 1 | left -> right
|
|
|
|
| <<array-length-operator, Array Length>> | <<painless-operators-array, Array>> | . | 1 | left -> right
|
|
|
|
| <<list-initialization-operator, List Initialization>> | <<painless-operators-reference, Reference>> | [] | 1 | left -> right
|
|
|
|
| <<list-access-operator, List Access>> | <<painless-operators-reference, Reference>> | [] | 1 | left -> right
|
|
|
|
| <<map-initialization-operator, Map Initialization>> | <<painless-operators-reference, Reference>> | [:] | 1 | left -> right
|
|
|
|
| <<map-access-operator, Map Access>> | <<painless-operators-reference, Reference>> | [] | 1 | left -> right
|
|
|
|
| <<post-increment-operator, Post Increment>> | <<painless-operators-numeric, Numeric>> | ++ | 1 | left -> right
|
|
|
|
| <<post-decrement-operator, Post Decrement>> | <<painless-operators-numeric, Numeric>> | -- | 1 | left -> right
|
|
|
|
| <<pre-increment-operator, Pre Increment>> | <<painless-operators-numeric, Numeric>> | ++ | 2 | right -> left
|
|
|
|
| <<pre-decrement-operator, Pre Decrement>> | <<painless-operators-numeric, Numeric>> | -- | 2 | right -> left
|
|
|
|
| <<unary-positive-operator, Unary Positive>> | <<painless-operators-numeric, Numeric>> | + | 2 | right -> left
|
|
|
|
| <<unary-negative-operator, Unary Negative>> | <<painless-operators-numeric, Numeric>> | - | 2 | right -> left
|
|
|
|
| <<boolean-not-operator, Boolean Not>> | <<painless-operators-boolean, Boolean>> | ! | 2 | right -> left
|
|
|
|
| <<bitwise-not-operator, Bitwise Not>> | <<painless-operators-numeric, Numeric>> | ~ | 2 | right -> left
|
|
|
|
| <<cast-operator, Cast>> | <<painless-operators-general, General>> | () | 3 | right -> left
|
|
|
|
| <<new-instance-operator, New Instance>> | <<painless-operators-reference, Reference>> | new () | 3 | right -> left
|
|
|
|
| <<new-array-operator, New Array>> | <<painless-operators-array, Array>> | new [] | 3 | right -> left
|
|
|
|
| <<multiplication-operator, Multiplication>> | <<painless-operators-numeric, Numeric>> | * | 4 | left -> right
|
|
|
|
| <<division-operator, Division>> | <<painless-operators-numeric, Numeric>> | / | 4 | left -> right
|
|
|
|
| <<remainder-operator, Remainder>> | <<painless-operators-numeric, Numeric>> | % | 4 | left -> right
|
|
|
|
| <<string-concatenation-operator, String Concatenation>> | <<painless-operators-reference, Reference>> | + | 5 | left -> right
|
|
|
|
| <<addition-operator, Addition>> | <<painless-operators-numeric, Numeric>> | + | 5 | left -> right
|
|
|
|
| <<subtraction-operator, Subtraction>> | <<painless-operators-numeric, Numeric>> | - | 5 | left -> right
|
|
|
|
| <<left-shift-operator, Left Shift>> | <<painless-operators-numeric, Numeric>> | << | 6 | left -> right
|
|
|
|
| <<right-shift-operator, Right Shift>> | <<painless-operators-numeric, Numeric>> | >> | 6 | left -> right
|
|
|
|
| <<unsigned-right-shift-operator, Unsigned Right Shift>> | <<painless-operators-numeric, Numeric>> | >>> | 6 | left -> right
|
|
|
|
| <<greater-than-operator, Greater Than>> | <<painless-operators-boolean, Boolean>> | > | 7 | left -> right
|
|
|
|
| <<greater-than-or-equal-operator, Greater Than Or Equal>> | <<painless-operators-boolean, Boolean>> | >= | 7 | left -> right
|
|
|
|
| <<less-than-operator, Less Than>> | <<painless-operators-boolean, Boolean>> | < | 7 | left -> right
|
2020-03-04 08:42:37 -05:00
|
|
|
| <<less-than-or-equal-operator, Less Than Or Equal>> | <<painless-operators-boolean, Boolean>> | +++<=+++ | 7 | left -> right
|
Painless: Restructure/Clean Up of Spec Documentation (#31013)
Full restructure of the spec into new sections for operators, statements, scripts, functions, lambdas, and regexes. Split of operators into 6 sections, a table, reference, array, numeric, boolean, and general. Clean up of all operators sections. Sporadic clean up else where.
2018-06-07 20:11:56 -04:00
|
|
|
| <<instanceof-operator, Instanceof>> | <<painless-operators-boolean, Boolean>> | instanceof | 8 | left -> right
|
|
|
|
| <<equality-equals-operator, Equality Equals>> | <<painless-operators-boolean, Boolean>> | == | 9 | left -> right
|
|
|
|
| <<equality-not-equals-operator, Equality Not Equals>> | <<painless-operators-boolean, Boolean>> | != | 9 | left -> right
|
|
|
|
| <<identity-equals-operator, Identity Equals>> | <<painless-operators-boolean, Boolean>> | === | 9 | left -> right
|
|
|
|
| <<identity-not-equals-operator, Identity Not Equals>> | <<painless-operators-boolean, Boolean>> | !== | 9 | left -> right
|
|
|
|
| <<bitwise-and-operator, Bitwise And>> | <<painless-operators-numeric, Numeric>> | & | 10 | left -> right
|
|
|
|
| <<boolean-xor-operator, Boolean Xor>> | <<painless-operators-boolean, Boolean>> | ^ | 11 | left -> right
|
|
|
|
| <<bitwise-xor-operator, Bitwise Xor>> | <<painless-operators-numeric, Numeric>> | ^ | 11 | left -> right
|
|
|
|
| <<bitwise-or-operator, Bitwise Or>> | <<painless-operators-numeric, Numeric>> | \| | 12 | left -> right
|
|
|
|
| <<boolean-and-operator, Boolean And>> | <<painless-operators-boolean, Boolean>> | && | 13 | left -> right
|
|
|
|
| <<boolean-or-operator, Boolean Or>> | <<painless-operators-boolean, Boolean>> | \|\| | 14 | left -> right
|
|
|
|
| <<conditional-operator, Conditional>> | <<painless-operators-general, General>> | ? : | 15 | right -> left
|
|
|
|
| <<elvis-operator, Elvis>> | <<painless-operators-general, General>> | ?: | 16 | right -> left
|
|
|
|
| <<assignment-operator, Assignment>> | <<painless-operators-general, General>> | = | 17 | right -> left
|
|
|
|
| <<compound-assignment-operator, Compound Assignment>> | <<painless-operators-general, General>> | $= | 17 | right -> left
|
2017-05-12 19:17:06 -04:00
|
|
|
|====
|