为什么要使用do end
,它到底能够解决什么问题呢;首先,语句块不是用花括号 { }
, 而是 do
语句块 end
表示语句块的开始和结束。而 花括号 {}
表示的为一个 表结构 。
do-end blocks
它解决的是变量作用域的问题,首先必须要明白local
变量和全局变量拥有完全不同的词法作用域;我们应该尽量声明local
变量,尽量减少一个变量的作用域范围,使其仅存在于自己需要的变量块内,而不要污染更大范围内的公共环境;
首先参考一下两个例子:
do
local x1=1
local x2=2
local sum=x1+x2
end
print(x1,x2) --nil nil
没有do end
:
local x1=1
local x2=2
local sum=x1+x2
print(x1,x2) --1 2
在 Lua
中,使用 do-end
将一条或多条语句包起来作为一个语句块儿(block)
,形成一个作用域,在这个作用域中定义的局部变量只在当前作用域有效,出了作用域之后就会被垃圾回收器自动回收!
do
local l_var = 1 -- 局部变量
g_var = 2 -- 全局变量
print(l_var, g_var) -- 1 2
end
print(l_var, g_var) -- nil 2
在作用域中定义的全局变量不受作用域的影响!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_44918090/article/details/126042748
内容来源于网络,如有侵权,请联系作者删除!