鉴于此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() endendprint(a,b) -- nil,nilf()print(a,b) -- function: 0xdeadbeef,nil
因此,为避免污染全局环境,您仍应使用函数内部的本地.
*除非你在f之上的其他范围内声明了本地,否则a将保持其范围.
总结以上是内存溢出为你收集整理的在Lua中,使用和不使用“local”关键字声明的本地函数之间是否存在差异?全部内容,希望文章能够帮你解决在Lua中,使用和不使用“local”关键字声明的本地函数之间是否存在差异?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)