lua学习笔记(1)

一、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
lua学习笔记(1)_第1张图片

4、for循环的泛型遍历
lua中的迭代器:pairs和ipairs
在table中有两部分,数组+映射,如果我们要遍历一个table的话,可以用pairs和ipairs,这两个函数是lua内置的函数。遍历table的时候,遍历的顺序是不确定的。
pairs:遍历table中的所有内容
ipairs:遍历table中的数组部分
例:使用ipairs只输出数组部分,结果只输出1和2
lua学习笔记(1)_第2张图片

例2、用pairs输出table的所有内容
lua学习笔记(1)_第3张图片

四、lua中的系统库
1、table中的系统函数
例:运行下面的程序,输出table中的函数
lua学习笔记(1)_第4张图片
结果:
lua学习笔记(1)_第5张图片
可以看到,table中的函数如上所示。

例2、
lua学习笔记(1)_第6张图片
结果:
lua学习笔记(1)_第7张图片

例3、如何删除table中的一个映射
只需要把该key的值设置成nil,则该映射就被删除了
lua学习笔记(1)_第8张图片
结果:
可以看到把k3设置成nil,就相当于删除了k3。
lua学习笔记(1)_第9张图片

2、转换函数
tostring:将整数转换成字符串
tonumber:将字符串转换成整数
例:
lua学习笔记(1)_第10张图片
结果:
lua学习笔记(1)_第11张图片

3、string中的函数
例:将string中的内置函数打印出来
这里写图片描述
结果:
lua学习笔记(1)_第12张图片

五、总结
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

你可能感兴趣的:(lua学习,c/c++基础)