Revision Difference
vararg#547749
<title>Var Args</title>
<cat>Dev.Lua</cat>
Varargs are variable number of arguments, meaning the amount of arguments is undefined.
The most notable function to take varargs is <page>Global.print</page>.
To create a function with varargs, you must set the **last** parameter of the function to **...** (that's three periods). You may use a combination of normal arguments with varargs, but the varargs **must** appear as the last parameter. Inside of the function's body, you may access each argument by creating a table of the varargs with **{ ... }**.⤶
⤶
Varargs are variable number of arguments, meaning the amount of arguments is undefined.
The most notable function to take varargs is <page>Global.print</page>.
To create a function with varargs, you must set the **last** parameter of the function to **...** (that's three⤶
periods). You may use a combination of normal arguments with varargs, but the varargs **must** appear as the last⤶
parameter. Inside of the function's body, you may access each argument by creating a table of the varargs with **{ ...⤶
}**.⤶
In the table, each key is the respective number of the argument, with the value being the value passed.
Varargs are stored at negative indices, so functions such as <page>debug.getlocal</page> may access the values where `-1` is the first vararg passed, `-2` is the second, etc. ⤶
Varargs are stored at negative indices, so functions such as <page>debug.getlocal</page> may access the values where⤶
`-1` is the first vararg passed, `-2` is the second, etc.⤶
You may create varargs yourself with <page>Global.unpack</page>.
<example>⤶
<description>Finds the average of a set of numbers.</description>⤶
<code>⤶
⤶
<example>⤶
<description>⤶
Finds the average of a set of numbers.⤶
</description>⤶
⤶
<code>⤶
function average( ... )
local args = { ... }
local result = 0
for _, v in ipairs( args ) do
result = result + v
end
return result / #args
local args = { ... }
local result = 0
for _, v in ipairs( args ) do
result = result + v
end
return result / #args
end
print( average( 5, 15, 30, 7, 52 ) )
</code>
<output>21.8</output>
</example>⤶
⤶
</code>
⤶
<output>21.8</output>
</example>