局部变量与代码块(block)

原文地址

http://book.luaer.cn/


使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。

x = 10

local i = 1              -- local to the chunk

 

while i<=x do

    local x = i*2        -- local to the while body

    print(x)             --> 2, 4, 6, 8, ...

    i = i + 1

end

 

if i > 20 then

    local x              -- local to the "then" body

    x = 20

    print(x + 2)

else

    print(x)             --> 10  (the global one)

end

 

print(x)                 --> 10  (the global one)

注意,如果在交互模式下上面的例子可能不能输出期望的结果,因为第二句local i=1是一个完整的chunk,在交互模式下执行完这一句后,Lua将开始一个新的chunk,这样第二句的i已经超出了他的有效范围。可以将这段代码放在do..end(相当于c/c++的{})块中。

应该尽可能的使用局部变量,有两个好处:

1. 避免命名冲突

2. 访问局部变量的速度比全局变量更快.

我们给block划定一个明确的界限:do..end内的部分。当你想更好的控制局部变量的作用范围的时候这是很有用的。

do

    local a2 = 2*a

    local d = sqrt(b^2 - 4*a*c)

    x1 = (-b + d)/a2

    x2 = (-b - d)/a2

end            -- scope of 'a2' and 'd' ends here

 

print(x1, x2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值