定義一個函式

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

我們來看看語法。首先,我們看到一個 function 關鍵字。嗯,那很有描述性。接下來我們看到 add 識別符號; 名字。然後我們看到 (a, b) 這些論點可以是任何東西,它們都是本地的。只有在函式體內部才能訪問它們。讓我們跳到最後,我們看到……好吧,end! 而介於兩者之間的是功能體; 呼叫它時執行的程式碼。return 關鍵字是使函式實際提供一些有用輸出的原因。沒有它,該函式不返回任何內容,這相當於返回 nil。這當然可以用於與 IO 互動的事情,例如:

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

在該函式中,我們沒有使用 return 語句。

函式也可以有條件地返回值,這意味著函式可以選擇不返回任何值(nil)或值。這在以下示例中進行了演示。

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

函式也可以返回由逗號分隔的多個值,如下所示:

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

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

函式也可以宣告為本地

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

它們也可以儲存在表格中:

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