一、table
Table=数组+映射
在lua中,table是数组和映射为一体的数据类型,table既可以当做数组使用,也可以当做映射来使用。
1、声明一个table类型
用花括弧{}来声明一个table
例:a={}
2、table的赋值
table可以在定义的时候直接赋值,例:
a={1,2,3,}
也可以单独赋值,但是注意table的下标必须是连续的,且从1开始,没有赋值的下标的值是nil,例:
a={}
a[1]=1
a[3]=2
则这时候a[2]就是nil
3、使用table的映射功能([key]=value)
a={1,2,[“hello”]=3}或
a[1]=1
a[2]=2
a[“hello”]=3
如果使用映射功能的话,可以用a.key表示value,也可以用a[key]表示value
二、lua中的函数
1、定义一个add函数
例1、function是函数关键字,add是函数名,(a,b)是函数参数,end是函数结尾。
function add(a,b)
return a+b
end
2、还可以将整个函数赋值给一个变量,这就相当于C语言里面的函数指针
add =function (a,b)
return a+b
end
3、lua的函数可以返回多个结果
例:可以返回多个结果
add=function (a,b)
return a+b,a-b
end
4、在lua中可以一次给多个变量赋值
例:
a,b=1,2 //a是1,b是2
a,b=1,2,3 //a是1,b是2,3是多余的,但不出错
a,b=1 //a是1,b是nil
5、在lua中,交换两个数的数值的时候,可以不用中间变量
例:
a,b=b,a //就直接交换两个变量的值了
三、lua中的流程控制
1、if语句
if 条件 then
表达式
elseif 条件 then
表达式
else
表达式
end
2、while语句
while 条件 do
表达式
end
3、for循环
其中步长缺省的话是1,起始值可以比终值大则就表示升序。起始值比终值小就表示降序,降序的时候步长要为负数。假如说升序的话,起始值比终值要大,则就不打印
for 循环变量=起始值,终值,步长 do
循环体
end
例1:打印1,3,5,7,9.
例2:倒序打印10到1
4、for循环的泛型遍历
lua中的迭代器:pairs和ipairs
在table中有两部分,数组+映射,如果我们要遍历一个table的话,可以用pairs和ipairs,这两个函数是lua内置的函数。遍历table的时候,遍历的顺序是不确定的。
pairs:遍历table中的所有内容
ipairs:遍历table中的数组部分
例:使用ipairs只输出数组部分,结果只输出1和2
例2、用pairs输出table的所有内容
四、lua中的系统库
1、table中的系统函数
例:运行下面的程序,输出table中的函数
结果:
可以看到,table中的函数如上所示。
例2、
结果:
例3、如何删除table中的一个映射
只需要把该key的值设置成nil,则该映射就被删除了
结果:
可以看到把k3设置成nil,就相当于删除了k3。
2、转换函数
tostring:将整数转换成字符串
tonumber:将字符串转换成整数
例:
结果:
3、string中的函数
例:将string中的内置函数打印出来
结果:
五、总结
1、table
table是数组和映射的集合,且table的下标从1开始,数组下标必须是连续的,不然就变成映射了。
2、万物皆值
在lua中所有东西都是值,函数也是值。
3、lua支持多个返回值
4、lua中的逻辑运算就是and,or,not
5、lua中的字符串链接运算符是”..”
6、lua中的作用域用local控制,而且local还可以优化代码
7、lua中的迭代器,ipairs用来遍历数组,pairs用来遍历table
|
请发表评论