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