do end用法的妙处

为什么要使用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

在作用域中定义的全局变量不受作用域的影响!

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森明帮大于黑虎帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值