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. PHP - 遍历文件夹下的所有文件名

    /** * * 函数名:myreaddir($dir) * 作用:读取目录所有的文件名 * 参数:$dir 目录地址 * 返回值:文件名数组 * * */ function myreaddir($di ...

  2. itextSharp 对pdf的每个页面添加footer/header

    static void SetAllHeaderFooter(string inputPath) { PdfReader reader=new PdfReader(inputPath); PdfSta ...

  3. telerik 控件 SCRIPT5007: 无法获取未定义或 null 引用的属性“documentElement” (IE 文档模式)

    IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有 ...

  4. Hough变换在opencv中的应用

    霍夫曼变换(Hough Transform)的原理 霍夫曼变换是一种可以检测出某种特殊形状的算法,OpenCV中用霍夫曼变换来检测出图像中的直线.椭圆和其他几何图形.由它改进的算法,可以用来检测任何形 ...

  5. [置顶] Objective-C ,ios,iphone开发基础:UIAlertView使用详解

    UIAlertView使用详解 Ios中为我们提供了一个用来弹出提示框的类 UIAlertView,他类似于javascript中的alert 和c#中的MessageBox(); UIAlertVi ...

  6. JDK 环境变量配置(Mac)

    Mac JDK 安装过后 修改 ~/. bash_profile 配置环境变量 修改内容: JAVA_HOME=$(/usr/libexec/java_home) export JAVA_HOME P ...

  7. MFC用GDI+动感歌词的制作

    源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1.       插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名 ...

  8. 一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)

    ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE.尽管,这个算法是几个法国人提出的,但是算法却有一个日文的名字.KAZE是日语‘风’的谐音,最近宣布退休的宫崎骏所拍摄的影片“起风了” ...

  9. Kendo UI开发教程(27): 移动应用开发简介

    Kendo UI 支持开发Web应用,前面介绍的SPA,也支持开发移动应用,至于使用 HTML5 + JavaScript + CSS开发移动是不是一个好的选择不在本文的讨论之中.Kendo UI M ...

  10. OCA读书笔记(1) - 浏览Oracle数据库架构

    Objectives: List the major architectural components of Oracle DatabaseExplain the memory structuresD ...