您的位置:首页 > 编程语言 > Lua

lua学习笔记(1)

2017-10-27 20:56 246 查看
一、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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: