定义一个函数

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