Lua定义函数

示例

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语句。

函数也可以有条件地返回值,这意味着函数可以选择不返回任何值(零)或返回任何值。在下面的示例中对此进行了演示。

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