Garry's Mod Wiki

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>