Single assignment
In the case of single assignment, Ruby evaluates the left-hand side before the right-hand side.
In the below example,
the last expression calls lists
, then data
, then []=
on the result of lists
.
Before
Multiple assignments didn’t work this way. Let’s checkout the below example.
Before Ruby 3.1, the above expression would be evaluated in the following order:
data
num
lists
[]=
called on the result oflists
tag
priority=
called on the result of thetag
After
Starting with Ruby 3.1, multiple assignments evaluation order has been made consistent with single assignment evaluation order.
For the above expression, the left-hand side is evaluated before the right-hand side and the order is as below:
lists
tag
data
num
[]=
called on the result oflists
priority=
called on the result of thetag