The symbol = is compiled into one of two assignment operators:
The following are considered to be aggregates:
There are two differences between the operators.
The two operators differ in the context in which their operands are evaluated.
The two operators differ in what they return.
Returns | Context in which Assignment Operator is Evaluated | ||
---|---|---|---|
scalar | list | ||
Operator | scalar assignment | The LHS as an lvalue | The LHS as an lvalue |
list assignment | The number of scalars returned by the RHS | The scalars returned by the LHS as lvalues |
Note that the right-hand side is used for the list assignment in scalar context.
Examples | Context in which Assignment Operator is Evaluated | |||
---|---|---|---|---|
scalar | list | |||
Operator | scalar assignment |
|
|
|
list assignment |
|
|
|
Related topics:
Update: Added examples.
Update: Incorporated JavaFan's additions.
Update: Removed list slices and mentioned state.
Update: One of the examples in the scalar context column did not depend on context. It has been moved to its own column. Also, added short explanations of examples.
Update: Reworded to not say there are only two assignment operators, because += and such are also assignment operators.
Update: Reworded to include new fangled []->@* to the list of aggregates.
|
---|