美文网首页
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)

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

  • Lua string库整理(v5.1)

    string库提供了字符串处理的通用函数。 例如字符串查找、子串、模式匹配等。 当在 Lua 中对字符串做索引时,...

  • Lua库函数概览

    Lua库函数概览数学库 table库 字符串库 IO库 os库 调试库

  • lua学习笔记3-c调用lua

    lua C api PS:这里是默认我已经学完了lua脚本的基本知识(包括table,元表,函数,基本库, 文件i...

  • lua部分使用问题及格式化

    1,table index is nil lua 表明table的下标是nil,有问题,需更改下标 2,lua格式...

  • LuaC API

    Lua C APi 总结 Lua_newtable(L) 创建table并放到栈顶 lua_pushstring(...

  • [LuaArray] 严格的 Lua 数组实现

    说点什么 由于 Lua table 的特殊构造,使用纯 Lua 实现 纯数组 是很困难的—— table 是 Ar...

  • Lua 语法入门

    赋值 lua 赋值支持多个值同时赋值 table lua table 的 key 可以是数字也可以是字符串,并且 ...

  • lua和c的初始

    lua和c的交互包括:c访问lua的变量、c访问lua的table、c调用lua的方法、lua调用c的函数 参考链...

  • lua table

    table.concat(table, sep, start, end) concat是concatenate(连...

网友评论

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

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