A let
expression, that is,
the keyword ‘let
’, followed by a list of patterns
and an expression
that can involve these patterns’ variables.
The expression is parsed with a precedence
just below the then
(ThenOperation
) and else
(ElseOperation
) operations,
to avoid ambiguity with these.
Alternatively, it may be an if
/then
/else
expression (IfElseExpression
)
or a let
expression (LetExpression
).
Examples:
let ([x,y] = loc, dist = sqrt(x^2 + y^2)) [x / dist, y / dist] let (c = other.a, d = other.b) Complex(a*c - b*d, a*d + b*c)
Anything
LetExpression
Expression
Node
Object
Anything
no subtypes hierarchy
Initializer |
LetExpression(PatternList patterns, DisjoiningExpression|IfElseExpression|LetExpression expression) Parameters:
|
Attributes | |
children | shared actual [PatternList, DisjoiningExpression|IfElseExpression|LetExpression] children The child nodes of this node. |
expression | shared DisjoiningExpression|IfElseExpression|LetExpression expression The expression. |
hash | shared 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 |
patterns | shared PatternList patterns The patterns that the |
Inherited Attributes |
Attributes inherited from: Expression |
Attributes inherited from: Node |
Attributes inherited from: Object hash , string |
Methods | |
copy | shared LetExpression copy(PatternList patterns = ..., DisjoiningExpression|IfElseExpression|LetExpression expression = ...) Parameters:
|
equals | shared actual Boolean equals(Object that) Determine if two values are equal. 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 | shared actual Result transform<out Result>(Transformer<Result> transformer) Transform this node with the given If you have a Refines Node.transform |
visit | shared 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 |