lua提供了一些辅助函数来操作table。

比如,从list中insert和remove元素,对array的元素进行sort。或者concatenate数组中的全部strings。以下就具体地解说这些方法。


insert and remove
table.insert将一个元素插入到指定位置。比如:

t = {1, 2, 3}
table.insert(t, 1, 4}
t的结果将是{4, 1, 2, 3}
insert的第二个參数是能够省略的。这样就会插入到数组的最后,从而不必移动其它元素。相同地。table.remove是从数组中移除(并返回)一个元素,table.remove(t,1)将移除t中下标是1的元素,假设不指定移除位置,则移除最后一个。

通过insert,remove方法,就能非常直接的地实现stacks。queues, double queues. push操作就相当于table.insert(t, x), 而pop操作就相当于table.remove(t)。比如定义一个栈:

stack = {}
function stack:push(x)
     table.insert(self, x)
end

function stack:pop()
     table.remove(self)
end

sort
还有一个实用的函数是sort,对数组进行排序,假设没有提供排序函数,默认是<操作。

人们范的普遍的错误是尝试对table的key进行排序。

在table里,全部key组成个集合,绝壁没有不论什么顺序。

假设你要对他们排序。首先要将他们复制到一个数组里。然后在进行sort。假如我们有一个table,想要以排序后的key的顺序进行迭代,我们就能够写过这种迭代器:

function pairsByKeys(t, f)
     local a = {}
     for k in pairs(t) do a[#a+1] = k end
     table.sort(a, f)
     local i = 0
     return function()
          i = i + 1
          return a[i], t[a[i]]
     end
end

concatenation
给定的table,全部的元素是string或是number,将返回table[i]..sep..table[i+1] ··· sep..table[j],分隔符默认是空字符串。i默认是1, j默认是表的长度。假设i > j, 则返回空字符串。比如:

spring = {"春林渐盛", "春水初生", "春风十里不如你"}

print(table.concat(spring, ","))

(完)

lua的table库中经常使用的函数的更多相关文章

  1. lua的table库中的常用函数总结

    table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: (1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; (2).table 的默认初始索引一般 ...

  2. numpy函数库中一些经常使用函数的记录

    ##numpy函数库中一些经常使用函数的记录 近期才開始接触python,python中为我们提供了大量的库,不太熟悉.因此在<机器学习实战>的学习中,对遇到的一些函数的使用方法进行记录. ...

  3. Lua 之table库

    标准table库 table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写,table.concat()函数列出参数中指定 ...

  4. Lua整理——table库

    table属性 table库是有一些辅助函数构成的,这些函数将table作为数组来操作. 当中.有对列表中插入和删除元素的函数,有对数组元素进行排序的函数.还有对链接一个数组中全部字符串的函数. 0. ...

  5. c++函数库中一些实用的函数

    有一些程序,虽然写起来不难,但是可能比较麻烦或容易出错,这时就可以用c++函数库里自带的一些实用的函数. 这里只记录一些不太常见的函数. ------------------------------- ...

  6. 使用Python PIL库中的Image.thumbnail函数裁剪图片

    今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...

  7. lua的table库

    函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j] ...

  8. c++标准库中的string常用函数总结《转》

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  9. R语言学习笔记(十七):data.table包中melt与dcast函数的使用

    melt函数可以将宽数据转化为长数据 dcast函数可以将长数据转化为宽数据 > DT = fread("melt_default.csv") > DT family_ ...

随机推荐

  1. Troubleshooting:lvm调整分区时“Error parsing metadata for VG fedora”的解决

    磁盘满了,由于使用的是lvm,想要扩容时发现无论lvs还是lvdisplay这类命令都会报同样的错: [root@localhost qwang]# lvs Parse error at (line ...

  2. 类作为返回类型 ,具有java特点-封装等 而且应用起来很方便。

    public class StudentDao { public Student getStudent(){ Student stu = new Student(); stu.setName(&quo ...

  3. cocos2d-x 制作资源下载页面

    开发游戏中用到从http 服务器下载文件的操作,所以要有个界面显示下载进度,同时联网采用curl库,因为下载是同步的操作,所以用了多线程 啥也不说,直接贴代码.我是采用ccbi做的页面,你也可以做一个 ...

  4. 推荐国内外优秀+免费CDN加速站点及公共cdn加速库

    -----------------------------------------------------------------免费CDN加速站点 1.CloudFlare CloudFlare可能 ...

  5. webview加载网页加载不出来

    1.webView.loadUrl(picTargetUrl); 写在最前面. 1.在无线城市迷你版的项目,用webview去loadUrl的时候出现加载的现象. url 地址是 http://go. ...

  6. 程序实现LayoutAnimationController

    在res/anim下新建anim_set.xml: <?xml version="1.0" encoding="utf-8"?> <set x ...

  7. sharepoint 2010 在自定义列表的字段上增加功能菜单

    sharepoint 2010 在自定义列表的字段上增加功能菜单方法 打开sharepoint designer 2010,找到需要修改的视图页面,例如allitem.aspx,编辑这个页面,点击高级 ...

  8. PHP移动互联网开发笔记(5)——文件的上传下载

    原文地址:http://www.php100.com/html/php/rumen/2014/0326/6706.html 一.文件的上传 1.client设置: (1).在 标签中将enctype和 ...

  9. 碰撞回避算法(一) Velocity Obstacle

    碰撞回避是机器人导航,游戏AI等领域的基础课题.几十年来,有很多算法被提出.注意这里主要指的是局部的碰撞回避算法.尽管和全局的路径规划算法(A*算法等)有千丝万缕的联系.可是还是有所不同的(局部的碰撞 ...

  10. C++学习笔记3

    函数小结 : 函数是有名字的计算单元,对程序(就算是小程序)的结构化至关重要. 函数的定义由返回类型.函数名.形參表(可能为空)以及函数体组成.函数体是调用函数时运行的语句块. 在调用函数时,传递给函 ...