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