在Lua中,使用和不使用“local”关键字声明的本地函数之间是否存
发布时间:2020-12-14 21:48:43 所属栏目:大数据 来源:网络整理
导读:前言:据我所知,网站上的文档并没有真正说明这一点,我甚至没有找到其他人提问,所以我很确定这两种形式是相同的,但我想要知道是否有人确切知道. 鉴于此Lua代码: function f() function a() ... end local function b() ... end ...end a()和b()之间是否有任
前言:据我所知,网站上的文档并没有真正说明这一点,我甚至没有找到其他人提问,所以我很确定这两种形式是相同的,但我想要知道是否有人确切知道.
鉴于此Lua代码: function f() function a() ... end local function b() ... end ... end a()和b()之间是否有任何功能差异?我说的是性能,访问,警告,任何事情.最后,他们在运行时是否都具有完全相同的底层表示? 我怀疑没有任何区别,但我不确定,这让我感到困扰.我知道a()的作用域是封闭函数f(),但是我不确定它是否真正使它成为局部变量的根本功能.用b(),我可以肯定. 我们从官方文档中了解到,我对上面b()的定义是语法糖: local b b = function() ... end 我很想相信,即使我的定义中没有local关键字,a()的最终去糖定义也将完全遵循该格式,包括本地部分. 我觉得我不能假设这一点. 解决方法
函数a()结束在代码块中,当函数运行时指定全局a *,而b保持函数的本地.
也许这段代码会更好地说明事情: function f() function a() end local function b() end end print(a,b) -- nil,nil f() print(a,b) -- function: 0xdeadbeef,nil 因此,为避免污染全局环境,您仍应使用函数内部的本地. *除非你在f之上的其他范围内声明了本地,否则a将保持其范围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |