代码改变世界

LUA table学习笔记

2016-12-31 11:45  撞破南墙  阅读(2819)  评论(0编辑  收藏  举报

 

function printT( ... )
     for i,v in ipairs(...) do
    print(i,v)
end
end


t1={}
t2={}
t3={}
table.insert(t1,"t1")
table.insert(t1,"t2")
table.insert(t1,1,"t3")
print "1 table.insert-----------"
--printT(t1)
print "2 table.concat-----------"
t4=table.concat( t1, ", ", 1, #t1)
--print (type(t4).."    "..t4)
print "3 table.move-----------"
--[[   http://www.2cto.com/kf/201602/489932.html
table.move (a1, f, e, t [,a2])
将表"a1"中从整数索引"f"到整数索引"e"之间(源区间)的元素
     复制到表"a2"中整数索引"t"及之后的位置(目标区间),
     表"a2"默认为"a1",目标区间与源区间可以重叠。
--]]
table.move(t1,1,2,1,t2)
--printT(t1)
print "-----------"
--printT(t2)
print "4 table.pack-----------"
--[[ table.pack(···)
     创建一个"table",并将参数作为元素以整数索引(1, 2, ...)插入"table"中。
     并将"n"这个域存储参数的总个数,返回所创建的"table"。]]
t4=table.pack(1,3,5)
printT(t4)

--[[ table.remove (list [, 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 的最后一个元素。

]]
print "-----------"
table.remove(t4,1)
printT(t4)
print "5 table.pack-----------"
--[[
table.sort (list [, comp])

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

使用函数"comp"排序表"list"中的元素。
     "comp"接收两个列表内元素作为参数,
     当第一个元素需要排在第二个元素之前时,返回"true",否则返回"false"。
     如果没有提供"comp",默认使用"<"(小于 操作符)比对元素。
]]
table.sort(t4,function (x1,x2 )
    return x1>x2
end)
printT(t4)