Lua基础(九)控制结构和变量的作用域

一 控制结构

Lua语言提供了一组精简且常用的控制结构(control structure),包括用于条件执行的if以及用于循环的while、repeat、for

细节1:所有控制结构语法上都有一个显示的终结符:end-->用于终结if、for、while结构

细节2:until用于终结repeat结构

(1)条件表达式

控制结构的条件表达式的结果可以是任何值

重点: lua只将flase和nil当作假

(2)if

备注:Lua语言不支持switch case语句

++++++++++++++++++++++++分割线++++++++++++++++++++++++
​
1)单选
2)二选一 -->else部分
3)多选一 -->编写嵌套的if语句 -->elseif -->git的多分支

(3)while

(4)repeat

(5)数值型for

for var = exp1, exp2, exp3 do
	something
end

说明:[exp1,exp2]表示迭代的区间,exp3表示循环的步长

(6)泛型for

(7)break、return、goto

1)break 语句:用来退出当前循环(for,repeat,while),在循环外部不可以使用 -->多层循环,不是针对函数

2)return 语句:用来从函数返回结果,当一个函数自然结束结尾会有一个默认的 return --> 只针对函数

强调:Lua 语法要求return 只能是代码块(block)中的最后一句

3)goto了解即可

二 变量作用域

1.  全局变量Lua变量默认是global全局的,在整个会话中将保持不变,除非改变了它.

2.  在使用全局变量时,在变量前加个g字母会更加明确

(1)局部变量

代码块: 可以是一个控制结构的主体、或是一个函数的主体、或是一个代码段-->变量被声明时的文件或字符串

"尽可能地使用局部变量"是一种良好的编程风格

说明:如果函数内没有使用local声明变量,则默认是全局变量

局部变量的作用域仅限于声明它们的哪个块,一个块(block)是一个控制结构的执行体、或者是一个函数的执行体再或者是一个程序块(chunk)

++++++++++++++局部变量的三种形式++++++++++++++

补充:隐式的局部变量-->for、while、if

① 显式声明局部变量

local var = 1

② 隐式局部变量

③ 显式

可以显式地界定一个块,只需将这些内容放入一对关键字do-end中即可

特点:每当输入了do时,Lua就不会单独地执行后面的每行的内容,而是直至遇到一个相应的end时,才会执行整个块的内容

④ 应用场景

local var = var

这句代码创建了一个局部变量var,并将用全局变量var的值初始化

具体解释:当其它函数改变了全局变量var的值,而代码段又需要保留var的原始值时,尤其是在运行时动态替换

++++++交换++++++

x, y = y, x   --> 交换x与y --> 不需要中间变量

(2)变量作用域

变量按作用域从大到小排列

1)全局环境变量-->(_ENV|_G)列表

2)文件作用范围的local变量 --> "包"或"模块"

3)函数内定义的local变量

4)函数内部程序块或复杂语句中定义的local变量

(3)局部变量的好处

1)局部变量避免由于不必要的命名而造成全局变量的混乱

2)局部变量能避免同一程序中不同代码部分中的命名冲突

3)访问局部变量比访问全局变量更快

4)局部变量会随着作用域的结束而消失,从而使垃圾回收器-->gc能够将其释放

(4)全局变量检查的模块

(5)最佳实践

局部变量在使用时再声明,避免漏掉初始化这个局部变量
经验分享 程序员 微信小程序 职场和发展