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)全局变量检查的模块

strict.lua

(5)最佳实践

局部变量在'使用时'再声明',避免'漏掉初始化'这个局部变量
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值