Lua 中的 'Local' 和 VB 中的 'Dim' 一样吗?

你好,我正在学习 Lua,不知道 'Local' 用于什么,也找不到定义或与其他语言的比较。那么,Lua 中的 'Local' 和 VB 中的 'Dim' 一样吗?

点赞
用户4984564
用户4984564

基本概念非常简单

function do_stuff()
   local a = 20
   b = 20
end

do_stuff()

print(a) --> nil
print(b) --> 20

正如示例所示, a 仅存在于 do_stuff 中,但是一旦该函数完成,它就会 "消失" 。

然而,如果考虑到闭包,它会变得更加复杂。

假设有以下情况:

function do_stuff
   local a = 20
   local f = function() return a end
   return f
end

print(a) --> nil
print(f()) --> 20

一开始这似乎像魔法一样。毕竟, a 应该已经消失了,但是 f() 仍然以某种方式找到了它。这是因为 f() 保存对 a 的引用并保持其生命周期。变量 a 某种程度上已经消失了,至少其名称已经不存在 。


但回答起初的问题,实际上它们并不完全相同。

2019-09-19 12:25:03