美文网首页
Lua table库整理(v5.1)

Lua table库整理(v5.1)

作者: chiguozi | 来源:发表于2016-08-23 00:45 被阅读185次

    这个库提供了表处理的通用函数。 所有函数都放在表 table。
    无论何时,若一个操作需要取表的长度, 这张表必须是一个真序列。

    table.concat(list, [, sep, [, i , [, j]]])

    提供一个列表,其所有元素都是字符串或数字,返回字符串 list[i]..sep..list[i+1] ··· sep..list[j]。 sep 的默认值是空串, i 的默认值是 1 , j 的默认值是 #list 。 如果 i 比 j 大,返回空串。
    sep为元素之间的间隔符

    local testTab = {1,2,3,4,5,6,7}
    print(table.concat(testTab))
    print (table.concat(testTab, "*", 1,3))
    
    Output:
    1234567
    1*2*3
    

    table.insert(table, [pos,] , value)

    在 list 的位置 pos 处插入元素 value , 并后移元素 list[pos], list[pos+1], ···, list[#list] 。 pos 的默认值为 #list+1 , 因此调用 table.insert(t,x) 会将 x 插在列表 t 的末尾。

    function printTable(tab)
        local output = ""
        for i,v in ipairs(tab) do
            output = output..v.."  "
        end
        print(output)
    end
    local testTab = {1,2,3,4}
    table.insert(testTab, 5)
    printTable(testTab)
    table.insert(testTab,2,10)
    printTable(testTab)
    table.insert(testTab, 8, 1)
    printTable(testTab)
    
    Output:
    1  2  3  4  5
    1  10  2  3  4  5
    1  10  2  3  4  5
    

    table.maxn(table)

    函数返回指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0。 此函数不限于table的数组部分

    local tab = {1,2,3,4}
    tab[100] = 2
    print(table.maxn(tab))
    tab[192.1] = 10
    print(table.maxn(tab))
    print(#tab)
    
    Output:
    100
    192.1
    4
    

    ** lua 5.3中被移除 **


    table.remove(table [, pos])

    移除 list 中 pos 位置上的元素,并返回这个被移除的值。 当 pos 是在 1 到 #list 之间的整数时, 它向前移动元素 list[pos+1], list[pos+2], ···, list[#list] 并删除元素 list[#list]; 索引 pos 可以是 #list + 1 ,或在#list 为 0 时可以是 0 ; 在这些情况下,函数删除元素 list[pos]。

    pos 默认为 #list, 因此调用 table.remove(l) 将移除表 l 的最后一个元素。

    function printTable(tab)
        local output = ""
        for i,v in ipairs(tab) do
            output = output..v.."  "
        end
        print(output)
    end
    local tab = {1,2,3,4,5,6,7}
    
    print(table.remove(tab))
    printTable(tab)
    
    print(table.remove(tab,2))
    printTable(tab)
    
    Output:
    7
    1  2  3  4  5  6
    2
    1  3  4  5  6
    

    table.sort(table, [, comp])

    在表内从 list[1] 到 list[#list] 原地 对其间元素按指定次序排序。 如果提供了 comp , 它必须是一个可以接收两个列表内元素为参数的函数。 当第一个元素需要排在第二个元素之前时,返回真 (因此 not comp(list[i+1],list[i]) 在排序结束后将为真)。 如果没有提供 comp, 将使用标准 Lua 操作 < 作为替代品。

    排序算法并不稳定; 即当两个元素次序相等时,它们在排序后的相对位置可能会改变。

    function printTable(tab)
        local output = ""
        for i,v in ipairs(tab) do
            output = output..v.."  "
        end
        print(output)
    end
    local tab = {1,6,7,4,3,9}
    table.sort(tab)
    printTable(tab)
    
    table.sort(tab, function(a,b) return a > b end)
    printTable(tab)
    
    Output:
    1  3  4  6  7  9
    9  7  6  4  3  1
    

    参考链接:http://cloudwu.github.io/lua53doc/manual.html

    相关文章

      网友评论

          本文标题:Lua table库整理(v5.1)

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