加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

匿名与非匿名函数Lua

发布时间:2020-12-15 00:27:39 所属栏目:大数据 来源:网络整理
导读:我正在学习Lua,并且遇到了匿名函数的概念.这很有趣,但我想知道它提供了什么额外的优势,而非匿名功能. 所以,如果我有类似的东西 function(a,b) return (a+b) end 该功能是匿名的,如果我有 function add(a,b) return (a+b) end 该功能不是匿名的.第二个更好,因
我正在学习Lua,并且遇到了匿名函数的概念.这很有趣,但我想知道它提供了什么额外的优势,而非匿名功能.

所以,如果我有类似的东西

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

该功能是匿名的,如果我有

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

该功能不是匿名的.第二个更好,因为我可以在任何我想要的地方调用它,我也知道我的功能在做什么.那么匿名函数的优势是什么?我在这里错过了什么吗?

解决方法

说实话,在Lua中没有命名函数.所有函数实际上都是匿名的,但可以存储在变量(具有名称)中.

命名函数语法函数add(a,b)返回一个b end实际上是一个syntactic sugar for add = function(a,b)返回一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读