Lua开发-- table

淩亂°似流年 2022-11-19 04:12 346阅读 0赞

table 是 Lua 的一种数据结构
1.初始化为空表

  1. mytable={ }

2.指定table内容

  1. mytable={ }
  2. mytable[1]='hell0'
  3. mytable[2]='lua'
  4. mytable[4]='easy'
  5. for i,k in pairs(mytable) do
  6. print(i,k)
  7. end
  8. --1 hell0
  9. --2 lua
  10. --4 easy

3.删除table,lua 垃圾回收会释放内存

  1. mytable=nil

4)当为 table a 设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素

  1. mytable={ }
  2. mytable[1]='hell0'
  3. mytable[2]='lua'
  4. mytable[4]='easy'
  5. print("mytable value:")
  6. for i,k in pairs(mytable) do
  7. print(i,k)
  8. end
  9. copytable=mytable
  10. print("copytable value:")
  11. for i,k in pairs(copytable) do
  12. print(i,k)
  13. end
  14. mytable=nil
  15. print("after delete mytable,copytable value:")
  16. for i,k in pairs(copytable) do
  17. print(i,k)
  18. end
  19. print(mytable)
  20. --[[
  21. mytable value:
  22. 1 hell0
  23. 2 lua
  24. 4 easy
  25. copytable value:
  26. 1 hell0
  27. 2 lua
  28. 4 easy
  29. after delete mytable,copytable value:
  30. 1 hell0
  31. 2 lua
  32. 4 easy
  33. nil
  34. ]]--

5)table操作


























函数 作用
table.concat (table [, sep [, start [, end]]]) 列出从start位置到end位置的数组部分的所有元素, 元素间以指定的分隔符(sep)隔开
table.insert (table, [pos,] value) 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.
table.remove (table [, pos]) 返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起
table.sort (table [, comp]) 对table升序排序

table.concat

  1. mytable={ }
  2. mytable[1]='hello'
  3. mytable[2]='lua'
  4. mytable[3]='is'
  5. mytable[4]='easy'
  6. print(table.concat(mytable))
  7. print(table.concat(mytable,"-"))
  8. print(table.concat(mytable,"-",1,3))
  9. --[[
  10. helloluaiseasy
  11. hello-lua-is-easy
  12. hello-lua-is
  13. ]]--

不能是键值对的形式,否则会报错

  1. mytable['key1']='hello'
  2. mytable['key2']='lua'
  3. mytable['key3']='is'
  4. mytable['key4']='easy'

invalid value (nil) at index 1 in table for ‘concat’

table.sort

  1. mytable={ "Tom","Bob","Lisa","Lili"}
  2. table.sort(mytable)
  3. for i,k in ipairs(mytable) do
  4. print(i,k)
  5. end
  6. --[[
  7. 1 Bob
  8. 2 Lili
  9. 3 Lisa
  10. 4 Tom
  11. ]]--

键值对的table(如果key为整型)会根据value排序

  1. mytable={ }
  2. mytable[2]='hello'
  3. mytable[3]='lua'
  4. mytable[1]='is'
  5. mytable[4]='easy'
  6. for i,k in pairs(mytable) do
  7. print(i,k)
  8. end
  9. print("******")
  10. table.sort(mytable)
  11. for i,k in pairs(mytable) do
  12. print(i,k)
  13. end
  14. --[[
  15. 1 is
  16. 2 hello
  17. 3 lua
  18. 4 easy
  19. ******
  20. 1 easy
  21. 2 hello
  22. 3 is
  23. 4 lua
  24. ]]--

table.insert

  1. mytable={ 'he','sa','ds','lu'}
  2. instable={ }
  3. for i,k in pairs(mytable) do
  4. table.insert(instable,k)
  5. end
  6. for i,k in pairs(instable) do
  7. print(i,k)
  8. end
  9. --[[
  10. 1 he
  11. 2 sa
  12. 3 ds
  13. 4 lu
  14. ]]--

table.remove

  1. mytable={ 'he','sa','ds','lu','li','kk'}
  2. instable={ }
  3. for i,k in pairs(mytable) do
  4. table.insert(instable,k)
  5. end
  6. for i =0,2,1 do
  7. table.remove(instable)
  8. end
  9. for i,k in pairs(instable) do
  10. print(i,k)
  11. end
  12. print(instable[1])
  13. print(instable[2])
  14. print(instable[3])
  15. print(instable[4])
  16. print(instable[5])
  17. print(instable[6])
  18. --[[
  19. 1 he
  20. 2 sa
  21. 3 ds
  22. he
  23. sa
  24. ds
  25. nil
  26. nil
  27. nil
  28. ]]--

发表评论

表情:
评论列表 (有 0 条评论,346人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Lua Table函数库

    一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  sta

    相关 lua-table

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。 Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能

    相关 Lua学习笔记--table

    Lua只有一种数据结构,叫table。但是他灰常强大,足以满足我们一般的要求,而且可以根据table做出其他的效果。 一.简介 table类型实际上是一种关联数组,是一

    相关 lua table vs closure

      最近在重构自己写的框架中的定时器模块,需要把回调函数保存起来,大概如下: function timer_mgr:save_timer( this,callback