Lua Functions Defining a function


function add(a, b)
    return a + b
-- creates a function called add, which returns the sum of it's two arguments

Let's look at the syntax. First, we see a function keyword. Well, that's pretty descriptive. Next we see the add identifier; the name. We then see the arguments (a, b) these can be anything, and they are local. Only inside the function body can we access them. Let's skip to the end, we see... well, the end! And all that's in between is the function body; the code that's ran when it is called. The return keyword is what makes the function actually give some useful output. Without it, the function returns nothing, which is equivalent to returning nil. This can of course be useful for things that interact with IO, for example:

function printHello(name)
    print("Hello, " .. name .. "!");

In that function, we did not use the return statement.

Functions can also return values conditionally, meaning that a function has the choice of returning nothing (nil) or a value. This is demonstrated in the following example.

function add(a, b)
    if (a + b <= 100) then
        return a + b -- Returns a value
        print("This function doesn't return values over 100!") -- Returns nil

It is also possible for a function to return multiple values seperated by commas, as shown:

function doOperations(a, b)
    return a+b, a-b, a*b

added, subbed, multiplied = doOperations(4,2)

Functions can also be declared local

    local function add(a, b) return a+b end
    print(add(1,2)) --> prints 3
print(add(2, 2)) --> exits with error, because 'add' is not defined here

They can be saved in tables too:

tab = {function(a,b) return a+b end}
(tab[1])(1, 2) --> returns 3