function - 匿名函数 vs 非匿名函数 Lua

标签 function functional-programming lua anonymous-function

我正在学习 Lua 并且遇到了匿名函数的概念。这很有趣,但我想知道它比非匿名函数提供了什么额外的优势。

所以如果我有类似的东西

function(a,b) return (a+b) end

该函数是匿名的,如果我有
function add(a,b) return (a+b) end

该函数是非匿名的。第二个更好,因为我可以随心所欲地调用它,而且我也知道我的函数在做什么。那么匿名函数有什么好处呢?我在这里错过了什么吗?

最佳答案

老实说,Lua 中没有命名函数这样的东西。所有函数实际上都是匿名的,但可以存储在变量中(具有名称)。

命名函数语法 function add(a,b) return a+b end实际上是 syntactic sugaradd = function(a,b) return a+b end .

函数通常用作事件处理程序和库不知道/无法知道的决策,最著名的例子是 table.sort() - 使用您的函数,您可以指定排序顺序:

people = {{name="John", age=20}, {name="Ann", age=25}}
table.sort(people, function (a,b) return a.name < b.name end)

关键是您以后很可能不需要该功能。当然,您也可以将函数保存到(可能是局部的)变量并使用它:
local nameComparator = function (a,b) return a.name < b.name end
table.sort(people, nameComparator)

如需更多信息,请阅读此 section on functions in PiL .

关于function - 匿名函数 vs 非匿名函数 Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142026/

相关文章:

swift - 在 swift 中使用函数

c++ - 如何检查 SWIG 接口(interface)文件中的 Lua 版本?

haskell - C++11 相当于 Haskell 的 "inits"

lua - 如何在 coronasdk 中动态缩放屏幕

lua - 如何将表名分配给变量?

javascript - 第一次这一行 console.log ("alphabet--->"+ alphabet);正在打印未定义

python - 在 Python 中实现函数的前向声明

javascript - 在 "microseconds"中设置javascript函数的时间间隔

functional-programming - 是否有 Python 惯用语用于评估具有短路的函数/表达式列表?

scala - 如何函数式地编写 Scala 的 Either