zoukankan      html  css  js  c++  java
  • lua中table的常用方法

    转载:https://blog.csdn.net/Fenglele_Fans/article/details/83627021

    1:table.sort()

    language = {"lua","java","c#","c++"}

    table.sort(language) --只有table一个参数,使用lua默认的排序方式排序
    for i, v in ipairs(language) do
    -- print(v) --输出c# c++ java lua
    end

    local function my_comp1(element1,element2) --自定义比较函数 作为table.sort()参数
    return element1<element2
    end
    table.sort(language,my_comp1)
    for i, v in ipairs(language) do
    print(v) --输出 c# c++ java lua
    end


    local function my_comp2(element1,element2) --自定义比较函数 作为table.sort()参数
    return element1>element2
    end
    table.sort(language,my_comp2)
    for i, v in ipairs(language) do
    -- print(v) --输出lua java c++ c#
    end


    local function my_comp3(element1,element2) --自定义比较函数 作为table.sort()参数
    if element1==nil then
    return false
    end
    if element2==nil then
    return true
    end
    return element1>element2
    end
    language[2]=nil --table中有nil存在的情况
    table.sort(language,my_comp3)
    for i, v in ipairs(language) do
    -- print(v) --输出lua c++ c#
    end

    2:table.insert()

    tab2 = {"a",2,"b",5} --定义一个table

    table.insert(tab2,2,"king") --指定在某一位置插入某值
    for i, v in ipairs(tab2) do
    -- print(v) --输出a king 2 b 5
    end

    table.insert(tab2,3) --没有指定位置的话,默认将值插入到末尾位置
    for i, v in ipairs(tab2) do
    -- print(v) --输出a king 2 b 5 3
    end

    tab3 = {"d",7,"e"}
    table.insert(tab2,tab3) -- 将table插入table
    for i, v in ipairs(tab2[7]) do
    --print(v) --输出d 7 e
    end

    tab2["mm"]="mmm" --添加一个新的键值对 下面的for迭代器选择pairs才能将新的键值对遍历出来,而非ipairs
    for i, v in pairs(tab2) do
    print(i,v) --输出1 a ; 2 king ; 3 2 ; 4 b ; 5 5 ; 6 3 ; 7 table ;mm mmm
    end

    3:table.concat()

    tab1 = {"a","b","c",5,"d"}
    local aa = table.concat(tab1)
    local bb = table.concat(tab1,"/")
    local cc = table.concat(tab1,",",2,4)
    print(aa) --输出abc5d
    print(bb)--输出a/b/c/5/d
    print(cc) --输出b,c,5
    print(type(aa)) --输出string
    print(type(bb)) --输出string
    print(type(cc)) --输出string

    --再来测试一下table.concat()的效率
    local strings = {} --定义一个局部table
    for i = 1, 100000 do
    strings[i]="hahaha" --给这个table赋值
    end

    --local stringT = ""
    --local startTime = os.clock() --os.clock()获取当前系统时间
    --for i,v in ipairs(strings) do
    -- stringT=stringT..v --使用for循环连接字符串
    --end
    --local endTime = os.clock()
    --local usedTime = endTime-startTime
    --print("for循环连接字符串消耗的时间:"..usedTime) --输出13.135

    local startTime = os.clock()
    table.concat(strings)
    local endTime = os.clock()
    local usedTime=endTime-startTime
    print("使用table.concat()连接字符串所消耗的时间:"..usedTime) --输出0.01(快了不是一点半点)

    4:table.remove()

    tab4 = {1,4,"tt","jj"}

    table.remove(tab4,1) --移除指定位置的table值,若没有指定位置,则默认移除最后一位的元素

    for i, v in ipairs(tab4) do
    print(v) --输出 4 tt jj
    end

    5:unpack()

    tab5 = {"b","v","b","f","a"} print( unpack(tab5,1,3)) --输出b v b print(unpack(tab5)) --输出b v b f a

    6.table.getn(studentList)获取字符串长度

  • 相关阅读:
    Ural 1741 Communication Fiend(隐式图+虚拟节点最短路)
    OpenCV学习笔记——多种Smooth平滑处理
    HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)
    POJ 2533 Longest Ordered Subsequence(LIS模版题)
    NBUT 1186 Get the Width(DFS求树的宽度,水题)
    Codeforeces 617E XOR and Favorite Number(莫队+小技巧)
    CodeBlocks的汉化、主题美化及其调试功能的实现
    PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)
    POJ 2892 Tunnel Warfare(线段树单点更新区间合并)
    HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
  • 原文地址:https://www.cnblogs.com/eggtomcato/p/10411505.html
Copyright © 2011-2022 走看看