在 Lua 中,使用 do-end 将一条或多条语句包起来作为一个语句块儿(block),形成一个作用域,在这个作用域中定义的局部变量只在当前作用域有效,出了作用域之后就会被垃圾回收器自动回收!
local x1 = 1
local x2 = 2
local sum = x1 + x2
print(x1, x2) --1 2
do
local x1 = 1
local x2 = 2
local sum = x1 + x2
end
print(x1, x2) --nil nil
一般使用的情况
需要严格的控制某些局部变量的作用域
local a, b = 1
do
local a = a + b
print(a) --2
end
print(a) --1
使用 do return end 来中断所在方法
local function func()
print(1) --1
do return end
print(2)
end