L02-01. do....end语句
一. 语句块 do ..... end
为什么要使用do end,它到底能够解决什么问题呢?
do-end 解决的是变量作用域的问题,首先必须要明白local变量和全局变量拥有完全不同的词法作用域;我们应该尽量声明local变量,尽量减少一个变量的作用域范围,使其仅存在于自己需要的变量块内,而不要污染更大范围内的公共环境;
1. local var do ... end写法
--local var do ... end 写法 local subBlock do
end --这俩代码等同 local subBlock do
end
2. 可以使变量更安全
--代码外面修改print不会影响到trpeint函数 do --将全局print函数的地址赋值给局部变量print, 那么局部变量就具备了全局函数逇功能 local print = print --赋值的是地址即使在do .... edn外修改了print也能正常使用自定义的traceprint函数 function traceprint(...) print(...) end end print = 0 --修改了全局函数名的值,这个全局函数不在指向有输出功能那个函数 traceprint(123) --输出结果: 123
3. 需要严格的控制某些局部变量的作用域, 在使用时候如果一个变量在某段中才会用到,可以使用do...end
local a, b = 1 do local a = a + b print(a) --2 end print(a) --1
4. 使用 do return end 来中断脚本执行
local function func() print(1) --1 do return end print(2) end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了