Lua 中的语句支持赋值,控制结构,函数调用,还有变量声明。
不允许空的语句段,因此 ;; 是非法的。
1 语句组 | chuncks
复制代码 代码如下:
chunck ::= {stat[';']}
([';'] 应该是表示语句组后面 ; 是可选项。)
2 语句块 | blocks
复制代码 代码如下:
block ::= chunck
stat ::= do block end
可以将一个语句块显式地写成语句组,可以用于控制局部变量的作用范围。
3 赋值 | assignment
Lua 支持多重赋值。
多重赋值时,按序将右边的表达式的值赋值给左值。右值不足补 nil,右值多余舍弃。
复制代码 代码如下:
b = 1
a,b = 4 -- a = 4,b = nil
+++
Lua 在进行赋值操作时,会一次性把右边的表达式都计算出来后进行赋值。
复制代码 代码如下:
i = 5
i,a[i] = i+1, 7 -- i = 6 ,a[5] = 7
特别地,有
x,y = y,x -- 交换 x,y 的值
+++
对全局变量以及表的域的赋值操作含义可以在元表中更改。
4 控制结构
4.1 条件语句
复制代码 代码如下:
if [exp]
[block]
elseif [exp]
[block]
else
[block]
end
4.2 循环语句
复制代码 代码如下:
while [exp]
[block]
end
+++
repeat
[block]
until [exp]
注意,由于 repeat 语句到 until 还未结束,因此在 until 之后的表达式中可以使用 block 中定义的局部变量。
例如:
复制代码 代码如下:
a = 1
c = 5
repeat
b = a + c
c = c * 2
until b > 20
print(c) --> 40
+++
4.3 break 和 return
break 和 return 只能写在语句块的最后一句,如果实在需要写在语句块中间,那么就在两个关键词外面包围 do end 语句块。
do break end
5 For 循环
for 循环的用法比较多,单独拎出来讲。
for 中的表达式会在循环开始前一次性求值,在循环过程中不再更新。
5.1 数字形式
for [Name] = [exp],[exp],[exp] do [block] end
三个 exp 分别代表初值,结束值,步进。exp 的值均需要是一个数字。
第三个 exp 默认为 1,可以省略。
复制代码 代码如下:
a = 0
for i = 1,6,2 do
a = a + i
end
等价于
复制代码 代码如下:
int a = 0;
for (int i = 1; i <= 6;i += 2){ // 取到等号,如果步进是负的,那么会取 i >= 6
a += i;
}
5.2 迭代器形式
迭代器形式输出一个表时,如果表中有函数,则输出的顺序及个数不确定(笔者测试得出的结果,具体原因未知)。
迭代器形式的 for 循环的实质
-- 依次返回 迭代器、状态表、迭代器初始值
复制代码 代码如下:
function mypairs(t)
function iterator(t,i)
i = i + 1
i = t[i] and i -- 如果 t[i] == nil 则 i = nil;否则 i = i
return i,t[i]
end
return iterator,t,0
end
-- 一个表
t = {[1]="1",[2]="2"}
-- 迭代形式 for 语句的 等价形式
复制代码 代码如下:
do
local f, s, var = mypairs(t)
while true do
local var1, var2 = f(s, var)
var = var1
if var == nil then break end
-- for 循环中添加的语句
print(var1,var2)
end
end
-- 迭代形式 for 语句
复制代码 代码如下:
for var1,var2 in mypairs(t) do
print(var1,var2)
end
--> 1 1
--> 2 2
--> 1 1
--> 2 2
5.2.1 数组形式
复制代码 代码如下:
ary = {[1]=1,[2]=2,[5]=5}
for i,v in ipairs(ary) do
print(v) --> 1 2
end
从1开始,直到数值型下标结束或者值为 nil 时结束。
5.2.2 表遍历
复制代码 代码如下:
table = {[1]=1,[2]=2,[5]=5}
for k,v in pairs(table) do
print(v) --> 1 2 5
end
遍历整个表的键值对。
关于迭代器的更多内容,可参考Lua 迭代器和泛型 for。
以上所述就是本文的全部内容了,希望大家能够喜欢。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼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]