lua基础学习-table

2 篇文章 0 订阅
1 篇文章 0 订阅

定义数组

取名为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)
end
for i=1,10 do                   --添加1到10至tmp中
    table.insert(tmp,i)
 end

for 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(为空值)结束。
直接上代码。。。==

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

结果为:

1       1
nil     2
2       a
d       3
cccc    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   1
2   2
3   a
4   3

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值