lua基础学习-table

来源:互联网 发布:iphone算日子软件 编辑:程序博客网 时间:2024/05/20 01:38

定义数组

取名为muq.lua,作为数据资源
数组也看作一张表,lua的for循环中,我的理解是k为有序的序号值(第几个),v为表的行

local tmp = {    {        id = 1001,        name = '张三',        male = true,    },    {        id = 1002,        name = '李四',        male = true,    },    {        id = 1003,        name = '李四1',        male = false,    },    {        id = 1004,        name = '李四2',        male = true,    },} return tmp

定义测试类

local tmp = require("muq")      --接收数据资源for k,v in pairs(tmp)do         --循环tmp(不同于ipair,下面会比对)    print(k,":",v)endfor i=1,10 do                   --添加1到10至tmp中    table.insert(tmp,i) endfor k,v in pairs(tmp)do         --打印出来    print(k,":",v)end

因为无法使用dump打印出表数据,所以table为16进制格式

把tmp中male相同的值的数据放一张表

 local tmp1 = {} local tmp2 = {} for k,v in pairs(tmp)do    if v.male ==true then        table.insert(tmp1,v)        print(tmp1)    elseif        v.male ==false then        table.insert(tmp2,v)        --print(tmp2)    end end

输出结果,另外的一个表就不打印了,自行想象

对比pairs和ipairs

ipairs为有迭代器的for循环,即为hash表,我理解为固定的有序循环,即(1,x),(2,x),(3,x)……..
其中k为数字number类型,且自行叠加匹配,直至循环到nil(为空值)结束。
直接上代码。。。==

--定义一个tmplocal tmp = {    ["1"]=1,    ["2"]="a",    ["nil"]= 2,    ["d"]=3,    ['cccc']=4,}
--pairs循环for k,v in pairs(tmp) do    print(k,v)end

结果为:

1       1nil     22       ad       3cccc    4

可以看的出来无论k为什么类型,都会老老实实的打印出表中数据

同样定义一个表(数组)local tmp = {    [8]=0,    [1]=1,    [2]=2,    [3]="a",    ["1"]=1,    [4]=3,    [6]=2,}

用ipairs循环

for k,v in ipairs(tmp) do    print(k,v)end

结果为

1   12   23   a4   3

可以看出,拥有迭代器的ipairs循环只会循环k值为number类型且从1自加直到为空时停止

原创粉丝点击