匿名函式

建立匿名函式

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