|局部变量和块(block)
text":"lua提供了局部变量 , 通过local语句来创建局部变量:
j = 10 ? ? ? ?--全局变量
local i = 10 ? ? ?--局部变量
与全局变量不同的是 , 局部变量的作用域仅限于声明它们的块 。
一个块(block)是一个控制结构的执行体、或者是一个函数的执行体再或者是一个程序块(chunk)
x = 10
local i = 1 ? ? ?-->程序块中的局部变量
while i<= x do
local x = i * 2 ? ?--while循环体中的局部变量
print(x) ? ? ? ? -->2468...
i = i + 1
end
if i > 20 then
local x ? ? ?--then中的局部变量
x = 20
print(x + 2) ?--如果测试成功会打印22
else
print(x) ? ? ?-->10(全局变量)
end
print(x) ? ? ? ?-->(全局变量)
如果我们在交互模式下(人机交流对话框) , 我们输入的每一行内容就会形成一个程序块(这里的程序块是一个独立的 , 在输入是会提示你 , 是一个完整的指令 , 命令行提示符显示一个>如果不完整则会提示一个>>)上面这段代码输入到交互模式下不会按照预期工作 , 就是这个原因 。 如何才能按照预期工作 , 怎么解决呢?
我们可以把这些内容放到一个do-end中 。 当我们输入do时 , lua就不会单独地执行后面每行地内容 , 而是直到遇见一个对应地end时 , 才会执行整个块的内容 。
我们在写程序的时候 , 尽可能地使用局部变量 , 这是一种良好地编程习惯 。 局部变量可以避免将一些无用的名称引入到全局环境 。 并且访问局部变量比全局变量更快 , 更重要的是一个局部变量通常会随着其作用域结束而消失 , 这样便使垃圾收集器可以释放其值 。 和全局变量一样 , 在声明局部变量的时候可以进行初始化 , 也就是可以给它赋值 , 没有赋值的话默认被初始化为nil 。
local ab = 110
if a < b then
print(a) ? ?-->1
local a ? ?-->具有隐式的“=nil”
print(a) -->nil
end
print(ab) ? ?-->1 ?10
我们在lua中 , 可以用局部变量来保存全局变量
local foo = foo
【|局部变量和块(block)】这句代码创建了一个局部变量foo , 并将用全局变量foo的值初始化它 。 如果后续其它函数改变了全局foo的值 , 那么可以在这里先将它的值保存起来 。 这种方式还可以加速在当前作用域对foo的访问 。
"
推荐阅读
- 深圳市场监管|深圳进口冻品须入集中监管仓进行消杀和抽样核酸检测
- the|新冠肺炎成美国第三大致死原因 仅次于心脏病和癌症
- 不起眼的朗姐|和老人出去旅游,为什么会觉得心累?网友:只要老妈身体允许以后还要带她去,哈哈哈哈
- 人间风物志|游雍和宫:有人说这是北京必打卡景点之一,但我并不觉得非去不可
- 凌霄|以家人之名凌霄的结局是什么 凌霄最后会和尖尖在一起吗
- 李小璐|李小璐为何自毁前程也要和贾乃亮离婚?高晓松在15年前就道出真相
- 陈婷|凌霄贺子秋的结局,贺子秋母子团圆,凌霄或将和陈婷彻底划清界限
- 确诊病例|陕西新增2例境外输入确诊病例和3例无症状感染者
- 温和型的护肤品有哪些 盘点好用的敏感肌温和型护肤品牌
- 盖饭故事TheStory|玛丽莲·梦露情史:她和乔迪马吉奥之间跌宕起伏的感情
