• Lua数组与表


    Lua数组


    Lua表

    table是 Lua中的一种数据结构, 既可以当做数组(array)使用, 又可以当做字典(类似 Java中的HashMap)来使用

    在 Lua的8中数据结构中,
    · 可以作为 table键的有: number, string, boolean, function, table, thread.
    · 不能作为 table键的有: nil.
    · userdata未知

    表的构造

    第一种方式:

    -- 使用花括号来创建一个空表, 然后赋值
    mytab = {}
    mytab['x'] = 12
    mytab[2] = 'hello'

    第二种方式:

    -- 创建表的时候, 同时初始化表数据
    -- 表中存储键值对数据, 格式如: [key] = value, 键和值可以是多种类型
    mytab = {
        ['x'] = 12,
        [2] = 'hello'
    }
    

    第三种方式

    -- 同第二种方式, 不过非数字类型的键可以省略中括号, 数字类型不能省略
    mytab = {
        x = 12,
        [2] = 'hello'
    }

    第四种方式

    -- 想使用数字索引作为键时, 可以通过仅写值的方式声明, 
    -- 这样 Lua会按照声明顺序为值建立从1开始的自增的索引
    -- 如果表中都是数字索引, 那么此时的表就是一个数组
    mytab = {
        1, 2, 3
    }

    表的遍历

    第一种方式

    -- 先构造一个表
    mytab = {
        11, 12, 13,
        a = 'A',
        b = 'B',
        c = 'C'
    }
    
    -- 以下是最常用的两种遍历方式
    -- 全表遍历
    -- 这种遍历方式是按照 table中 key的 hash值排列顺序来遍历的, 
    --   并非是 table中 key的定义顺序, 并且不关心 key是否从1开始和 key是否以1递增
    for k, v in pairs(tab) do
        print(k, v)
    end  
    
    -- [[
    output: 
        1   11
        2   12
        3   13
        c   C
        b   B
        a   A
    ]]
    
    -- 仅遍历表中的数组部分
    
    -- 按照 key的大小顺序来遍历 (注意不是 key定义的顺序)
    -- 因为表中非数字键的键值对是使用 hash表存储的, 这样的数据是无序的, 所以无法遍历
    for k, v in ipairs(mytab) do
        print(k, v)
    end
    
    --[[
    output:
        1   11
        2   12
        3   13
    ]]
    
    
    
    -- 第三种方式
    -- #mytab可以获取到 mytab表中的数组部分的元素个数
    for i = 1, #mytab do
        print(mytab[i])
    end
    
    
    -- 第四种
    -- 
    
    
    
    
    

    表的操作

  • 相关阅读:
    mysql外键添加error1215
    shell命令获取最新文件的名称
    centos7 apache提供文件下载
    centos7 时间设置
    微服务通信的类型
    angular-cli
    npm
    模块相关
    加油!冲冲冲
    软件评测
  • 原文地址:https://www.cnblogs.com/bobo132/p/13950364.html
Copyright © 2020-2023  润新知