匿名函式
建立匿名函式
匿名函式就像常規的 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
函式顯示瞭如何在引數內傳遞函式,以及如何通過其他名稱訪問函式。