Documentation

Better explanation about the guaranties of multiple assignment in
the manual.
This commit is contained in:
Roberto Ierusalimschy
2021-10-11 13:49:13 -03:00
parent deac067ed3
commit 87a9573b2e
4 changed files with 13 additions and 5 deletions

View File

@@ -1346,8 +1346,10 @@ then all values returned by that call enter the list of values,
before the adjustment
(except when the call is enclosed in parentheses; see @See{expressions}).
The assignment statement first evaluates all its expressions
and only then the assignments are performed.
If a variable is both assigned and read
inside a multiple assignment,
Lua ensures all reads get the value of the variable
before the assignment.
Thus the code
@verbatim{
i = 3
@@ -1367,6 +1369,12 @@ x, y, z = y, z, x
}
cyclically permutes the values of @id{x}, @id{y}, and @id{z}.
Note that this guarantee covers only accesses
syntactically inside the assignment statement.
If a function or a metamethod called during the assignment
changes the value of a variable,
Lua gives no guarantees about the order of that access.
An assignment to a global name @T{x = val}
is equivalent to the assignment
@T{_ENV.x = val} @see{globalenv}.