Lua 匿名功能

示例

创建匿名函数

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

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

如您所见,该函数未分配任何名称,例如print或add。要创建匿名函数,您要做的就是省略名称。这些函数也可以接受参数。

了解语法糖

重要的是要了解以下代码

function double(x)
    return x * 2
end

实际上只是

double = function(x)
    return x * 2
end

但是,上述函数不是匿名的,因为该函数直接分配给变量!

函数是一流的价值

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

为了说明这一点,我们还将创建一个“半”函数:

half = function(x)
    return x / 2
end

因此,现在我们有两个变量half和double,都包含一个函数作为值。如果我们想创建一个将数字4输入两个给定函数并计算两个结果之和的函数,该怎么办?

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

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

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