临时变量用完还想"释放掉",学员以为局部变量会自动回收——实际局部变量活到函数或块的末尾;用 do...end 包出显式块,块内 local 到 end 即失效,长函数里的临时名字就不会互相干扰。错误场景:
local function calc()
local tmp = 0
tmp = tmp + 100
-- 200 行之后 tmp 已经不用了,但名字还占着
local tmp2 = tmp * 2
return tmp2
end
print(calc())
tmp 的名字一直存活到函数结束——长函数里 tmp、tmp1、tmp2 的命名压力全来自不会失效的作用域。
一段临时逻辑用 do...end 包住,块内 local 出块即失效。规范写法。示例代码如下:
local function calc()
local result = 0
do
local rate = 2
result = 100 * rate
end
do
local rate = 3
result = result + 50 * rate
end
return result
end
print(calc())
两个 rate 各自独立——同名的临时量在不同块里互不干扰。
三步验证:在块外引用块内 local 复现 nil;块内改写外层变量验证外层可见;两个相邻 do 块里声明同名 local,确认互不影响——作用域边界就是 end。
do 块配局部函数可以把"准备-使用-清理"三段收进一个视觉单元。示例代码如下:
do
local material = "黑铁矿石"
print("本次锻造消耗:" .. material)
end
print("锻造完成")
材料名只在锻造逻辑内可见——块是代码的临时房间,进出有序。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 深夜在线的成员没活动可参加,帮会夜场形同虚设。更夫玩法上线:帮会更夫沿固定路线走街报时,成员陪同巡更…
【游戏】 一、业务场景 巡逻玩法清一色打怪刷分,缺一个有剧情张力的夜场任务。捕快缉拿上线:每天刷新一名在逃逃犯藏进城内某处,…
【语法】 一、隐蔽陷阱 整点奖励用秒级触发器反复检查,同一个小时里条件一直成立,奖励被领了一整次又一次——缺一道"刻度变化才…
【语法】 一、隐蔽陷阱 6 支队伍打单循环,每队要与其他 5 队各碰一次、共 15 场——随手排的赛程不是这轮有队轮空两回,…
【游戏】 一、业务场景 冬季庆典缺一个动手类比赛,纯投票类活动又被小号刷票刷到失真。冰雕大赛改规则:限时 40 分钟现场雕刻…
【语法】 一、隐蔽陷阱 电梯收到 3 层上行、7 层上行、2 层下行、9 层下行的请求,先来先服务会让它 1 到 3 到 7…