Garry's Mod Wiki

Revision Difference

vararg#527898

<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 **{ ... }**⤶ 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> function average(...) local args = {...} function average( ... ) local args = { ... } local result = 0 for k, v in pairs(args) do for _, v in ipairs( args ) do result = result + v end return result / #args end print(average(5, 15, 30, 7, 52)) print( average( 5, 15, 30, 7, 52 ) ) </code> <output>21.8</output> ⤶ </example>⤶ </example>⤶