美文网首页
四 表(table)

四 表(table)

作者: 愤愤的有痣青年 | 来源:发表于2020-12-03 16:09 被阅读0次

    表的创建方式

    >a={} --> 创建空表
    >a={1,2,3} --> 在创建时指定数据,这类数据可以通过a[0]的方式获取
    >a={name="jack"}  --> 创建key=value形式的数据,可以通过a.name 或a['name']的方式获取
    > a.p = 1 --> 动态创建,等价于a['p'] = 1
    

    混合创建

    > m = '456'
    > a={name='123', [m]=789, '10', 11} --> [m]这种形式是用m变量所指定的值来作为key
    > a.name --> '123'
    > a.m --> nil
    > a['456'] -->789
    > a[1]  --> 10
    > a[2] -->11
    

    数组/列表

    表的一个创建方式如下

    a= {}
    for i=1,10 do
        a[i] = i^2
    end
    

    此处得到的为一个索引从1开始,到10的数组,需要注意,在lua中,其默认的索引下标是从1开始的,例如

    > m = {"a", "b"}
    > m[0] --> nil
    > m[1] -->"a"
    > m[2] -->"b"
    

    序列

    序列指的是不含有nil元素的表数据,例如{1,2,3,4}属于序列,但{1,2,nil,3}不属于序列,对于序列,可以使用#符号获取其长度,例如

    > a={1,2,3,4}
    > #a -->4
    
    > b={}
    > b[1] = 'a'
    > b[10]='b'
    > #b --> 1  这是因为lua中对于存在空洞的表无法计算出准确的长度
    

    遍历表

    使用pairs遍历键值对,遍历的顺序是随机的

    t = {10, print, x=12, k='h1'}
    for k,v in pairs(t) do
         print(k,v)
    end
    

    输出

    1   10
    x   12
    2   function: 0x41b010
    k   h1
    

    使用ipairs遍历列表,结果将是有序的,但此方式无法得到key:value形式的数据

    t = {10, print, x=12, k='h1'}
    for k,v in ipairs(t) do
         print(k,v)
    end
    

    输出

    1   10
    2   function: 0x41b010
    

    使用for循环编列

    t = {10, print, x=12, k='h1'}
    for i=1,#t do
         print(i, t[i])
    end
    

    输出

    1   10
    2   function: 0x41b010
    

    相关文章

      网友评论

          本文标题:四 表(table)

          本文链接:https://www.haomeiwen.com/subject/ezcuwktx.html