匿名函数

创建匿名函数

匿名函数就像常规的 Lua 函数一样,除了它们没有名称。

doThrice(function()
    print("Hello!")
end)

如你所见,该功能未分配给任何名称,如 printadd。要创建匿名函数,你只需省略名称即可。这些函数也可以带参数。

理解语法糖

重要的是要了解以下代码

function double(x)
    return x * 2
end

实际上只是一个简写

double = function(x)
    return x * 2
end

但是,上述函数不是匿名函数,因为函数直接赋值给变量!

函数是一等值

这意味着函数是一个与传统值(如数字和字符串)具有相同权限的值。函数可以存储在变量中,在表中,可以作为参数传递,也可以由其他函数返回。

为了证明这一点,我们还将创建一个功能:

half = function(x)
    return x / 2
end

所以,现在我们有两个变量 halfdouble,它们都包含一个函数作为值。如果我们想要创建一个将 4 号数字输入两个给定函数的函数,并计算两个结果的总和,该怎么办?

我们想要像 sumOfTwoFunctions(double, half, 4) 这样调用这个函数。这将把 double 函数,half 函数和整数 4 输入到我们自己的函数中。

function sumOfTwoFunctions(firstFunction, secondFunction, input)
    return firstFunction(input) + secondFunction(input)
end

上面的 sumOfTwoFunctions 函数显示了如何在参数内传递函数,以及如何通过其他名称访问函数。