前言
学习一门语言,首先就是从最基本的语法开始,这一篇将对Lua中的语句进行概要的总结。
赋值
赋值的基本含义是修改一个变量或一个table中字段的值,这个和其它语言没有多少区别,但是对于Lua,有一个特性,它允许“多重赋值”,也就是一下子将多个值赋予多个变量,例如以下代码:
复制代码 代码如下:
local x1, x2 = 2, 4
print(x1) -->2
print(x2) -->4
在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值,例如以下用法,可以非常简便的交换两个元素的值:
复制代码 代码如下:
local x1, x2 = 2, 4
x1, x2 = x2, x1
print(x1) -->4
print(x2) -->2
Lua总是会将等号右边值得个数调整到与左边变量的个数相一致,规则是:如果值得个数少于变量的个数,那么多余的变量会被赋为nil;如果值得个数更多的话,那么多余的值会被忽略掉。
局部变量与块
相对于全局变量,Lua同时也提供了局部变量。通过local语句来创建局部变量:
复制代码 代码如下:
i = 10 -->全局变量
local i = 10 -->局部变量
在Lua中,局部变量也是有作用范围的,也就是说,出了局部变量的作用范围,局部变量就会失去作用,这个和C++等高级语言是一样的道理。我们在编程的过程中,也可以使用do…end来显示的声明一个块,例如以下代码:
复制代码 代码如下:
do
local a1 = 10
local a2 = 10
end -->a1和a2的作用域到此结束
至于使用局部变量和全局变量,关系到编程风格和实际需要,这里不做多说。
控制结构
几乎所有的语言都有控制结构,同样,对于Lua的控制结构是非常简单的。Lua提供了用于条件执行的if,循环的while、repeat和for。所有的控制结构都有一个显式的终止符:if、for和while以end作为结尾,repeat以until作为结尾。特别注意,在Lua中是不支持switch结构的。
if then else
if语句先测试其条件,然后根据测试结果执行then部分或者else部分,else部分是可选的。如果要编写嵌套的if,可以使用elseif,下面通过代码示例来说明if的使用。
复制代码 代码如下:
if a < 0 then a = 0 end
if a < b then retuan a else return b end
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
end
while
Lua中的while与其它语言是一样的,示例代码如下:
复制代码 代码如下:
local a = 10
while a > 0 do
a = a - 1
-- Do something else
end
repeat
repeat就好比C++中的do…while结构,循环体至少会执行一次。repeat-until语句重复执行其循环体直到条件为真时结束。
在Lua中有两种for语句的形式:数字型for和泛型for
数字型for
数字型for的语法如下:
复制代码 代码如下:
for var = exp1, exp2, exp3 do
-- Do something
end
var从exp1变化到exp2,每次变化都以exp3作为步长进行递增,并执行一次do…end之间的代码。第三个表达式exp3是可选的,若不指定的话,Lua会将步长默认为1。例如以下代码:
复制代码 代码如下:
for var = 1, 10 do
print(var)
end
for var = 10, 1, -1 do
print(var)
end
在使用for时,需要注意以下两点:
1.for的exp1,exp2和exp3,这三个表达式是在循环开始前一次性求值得;并不会每次循环都进行求值;
2.控制变量var会被自动的声明为for语句的局部变量,并且仅在循环体内可见。
泛型for
泛型for循环通过一个迭代器函数来遍历所有值。在Lua的基础库中提供了ipairs,这是一个用于遍历数组的迭代器函数。从外观上看泛型for比较简单,但其实它是非常强大的。通过不同的迭代器,几乎可以遍历所有的东西。标准库提供了几种迭代器,包括用于迭代文件中每行的io.lines、迭代table元素的pairs、迭代数组元素的ipairs和迭代字符串中单词的string.gmatch等。当然了,我们也可以编写自己的迭代器,在以后的文章中,我会总结如何编写迭代器的。
break与return
break和return语句用于跳出当前的块。这里的break、return和C++等语言是一样的。break语句用于结束一个循环,return语句用于从一个函数中返回结果。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]