匿名函数就像常规的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函数展示了如何在参数内传递函数,以及如何通过其他名称访问函数。