An if/then/else conditional expression, that is,
the keyword ‘if
’, followed by a condition list,
the keyword ‘then
’, followed by an expression, and
the keyword ‘else
’, followed by another expression.
The then
and else
expressions are both parsed with a precedence
just below the then
(ThenOperation
) and else
(ElseOperation
) operations,
to avoid ambiguity with these.
Alternatively, they may be if
/then
/else
expressions (IfElseExpression
)
or let
expressions (LetExpression
).
Examples (multi-line):
if (is Person p) then p.name else p.string if (exists youngest = peopleSortedByAge.first, youngest.age >= 18) then true else false
Anything
IfElseExpression
ConditionalExpression
Expression
Node
Object
Anything
no subtypes hierarchy
Initializer |
IfElseExpression(Conditions conditions, DisjoiningExpression|IfElseExpression|LetExpression thenExpression, DisjoiningExpression|IfElseExpression|LetExpression elseExpression) Parameters:
|
Attributes | |
children | Source Codeshared actual [Conditions, DisjoiningExpression|IfElseExpression|LetExpression, DisjoiningExpression|IfElseExpression|LetExpression] children The child nodes of this node. |
conditions | Source Codeshared Conditions conditions The conditions that need to be satisfied
to evaluate to the |
elseExpression | Source Codeshared DisjoiningExpression|IfElseExpression|LetExpression elseExpression The expression that is evaluated if the |
hash | Source Codeshared actual Integer hash The hash value of the value, which allows the value to be an element of a hash-based set or key of a hash-based map. Implementations must respect the constraint that:
Therefore, a class which refines In general, Note that when executing on a Java Virtual Machine, the
64-bit Refines Object.hash |
thenExpression | Source Codeshared DisjoiningExpression|IfElseExpression|LetExpression thenExpression The expression that is evaluated if the |
Inherited Attributes |
Attributes inherited from: Expression |
Attributes inherited from: Node |
Attributes inherited from: Object hash , string |
Methods | |
copy | Source Codeshared IfElseExpression copy(Conditions conditions = ..., DisjoiningExpression|IfElseExpression|LetExpression thenExpression = ..., DisjoiningExpression|IfElseExpression|LetExpression elseExpression = ...) Parameters:
|
equals | Source Codeshared actual Boolean equals(Object that) Determine if two values are equal. For any two non-null objects x == y Implementations should respect the constraints that:
Furthermore it is recommended that implementations
ensure that if A class which explicitly refines Note that an implementation of Refines Object.equals |
transform | Source Codeshared actual Result transform<out Result>(Transformer<Result> transformer) Transform this node with the given If you have a Refines Node.transform |
visit | Source Codeshared actual void visit(Visitor visitor) Visit this node with the given Refines Node.visit |
Inherited Methods |
Methods inherited from: Node |
Methods inherited from: Object equals |