Med Written By EXpodo1234ALT

Variadic functions Created on: 01-01-2019

Learn what variadic arguments and functions are

Introduction

If you having a understanding of what arguments, parameters and functions are (in which you should probably know before taking this tutorial), you might not know what variadic arguments are or heard of them, but dont know what they are. Variadic functions can take in pretty much any amount of arguments unlike normal arguments which you'd need to define a parameter. There are in fact multiple built in methods from the library that are variadic functions such as print(), if you didnt know can print multiple strings without calling it multiple times.

Structure

A variadic function can be defined by 3 dots "..." and can only be placed as the last parameter or the only parameter in the function. Usually you should put the arguments it stores inside a table ex "local table = {...}". Then to access those parameters you could either iterate through the table or just index a specific element.

local function myHobbies(prefix, ...) -- the last parameter
	local hobbies = {...}
	
	print(prefix..table.concat(hobbies, ", "))
	
	--then if you wanted to iterate through it...
	
	for i,v in pairs(hobbies) do
		print(i,v)
	end
	
end

myHobbies("my hobbies are: ", "sleeping", "drinking", "doing nothing")

That should print "my hobbies are: sleeping, drinking, doing nothing" and we didnt even need to create a parameter for each of those hobbies!. Also if you're wondering what the "table.concat()" method is, I might just create a simple explantion. table.concat pretty much just concatenates every element in a table in one string and a separator string can be used to separate each element one from each other. Now that we have a basic understanding of what a variadic function is, we might just create an algorithm or system that kind've replicates how print() would work.

local function printStuff(...)
	local strs = {...}
	
	print(table.concat(strs, " "))
end

printStuff("aa", "lol") -- "aa lol"

Uses

You might be wondering "what can I use this for?", in which it could be used for to create an algorithm to challenge yourself, creating your own custom classes with Object Oriented Programming (OOP). Maybe you could create a function that takes in numbers and gets the sum out of all of them.

local function getSum(a, b, ...)
		local numbers = {a, b, ...}
		local sum = 0 
		
		for _,num in pairs(numbers) do
			if type(num) == "number" then -- check if its a number
				sum = sum + num
			end
		end
		
		return sum -- return the sum
	end
end

print(getSum(10,12,234,12)) -- prints "268"
print(getSum(19,100,nil,3)) -- prints "122"

Med Written By EXpodo1234ALT

See EXpodo1234ALT's profile on Roblox

Discussion