Find quick help here to get you started with Hollywood
- Posts: 305
- Joined: Thu Feb 24, 2011 11:08 pm
Code: Select all
The second box command fails with "Not enough arguments".
How does the interpreter deals internally with the parameter list and cause that Unpack can throw parameters at the end, but not inside the parameter list?
Not a problem, just made me curious.
- Posts: 2710
- Joined: Fri Feb 12, 2010 2:33 pm
- Location: Germany
That's how the Lua interpreter works. This is what the Lua 5.0 reference manual says:
Because a function can return any number of results (see 2.4.4), the number of results must be adjusted before they are used. If the function is called as a statement (see 2.4.6), then its return list is adjusted to zero elements, thus discarding all returned values. If the function is called inside another expression or in the middle of a list of expressions, then its return list is adjusted to one element, thus discarding all returned values except the first one. If the function is called as the last element of a list of expressions, then no adjustment is made (unless the call is enclosed in parentheses).
In other words: The only way to make sure that Unpack()'s return values aren't adjusted to just one value is to use Unpack() as the last parameter...