Lua中table的一些辅助函数介绍

 更新时间:2014年09月28日 08:49:05   投稿:junjie  
这篇文章主要介绍了Lua中table的一些辅助函数介绍,这些函数组成了table的函数库,需要的朋友可以参考下

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

0.table.getn()Lua 中我们经常假定 array 在最后一个非 nil 元素处结束。

这个传统的约定有一个弊端:我们的 array中不能拥有 nil 元素。对大部分应用来说这个限制不是什么问题,比如当所有的 array 有固定的类型的时候。但有些时候我们的 array 需要拥有 nil 元素,这种情况下,我们需要一种方法来明确的表明 array的大小.

1.tabel.insert()用于将一个元素插入到一个数组的指定位置,它会移动后续的元素以空出空间,且是数组的长度增加1.

eg:如果a是一个数组{10,20,30},调用table.insert(a,1,15)后,a变为{15,10,20,30}。经常使用的一个特殊情况是,我们不带位置参数调用insert,将会在array最后位置插入元素(所以不需要元素移动)。

2.table.remove()函数删除数组中指定位置的元素,并返回这个元素,所有后面的元素前移,并且数组的大小改变。不带位置参数调用的时候,他删除array的最后一个元素。

使用这两个函数,很容易实现栈、队列和双端队列。我们可以初始化结构为a={}。一个push操作等价于table.insert(a,x);一个pop操作等价于table.remove(a)。要在结构的另一端结尾插入元素我们使用table.insert(a,1,x);删除元素用table.remove(a,1)。最后两个操作不是特别有效的,因为他们必须来回移动元素。然而,因为table库这些函数使用C实现,对于小的数组(几百个元素)来说效率都不会有什么问题。

3.table.sort()他有两个参数:存放元素的数组和排序函数。

排序函数有两个参数并且如果在array中排序后第一个参数在第二个参数前面,排序函数必须返回true。如果未提供排序函数,sort使用默认的小于操作符进行比较。默认是升序。

一个常见的错误是企图对表的下标域进行排序。在一个表中,所有下标组成一个集合,但是无序的。如果你想对他们排序,必须将他们复制到一个array然后对这个array排序。

对于Lua来说,数组也是无序的。但是我们知道怎样去计数,因此只要我们使用排序好的下标访问数组就可以得到排好序的函数名。这就是为什么我们一直使用ipairs而不是pairs遍历数组的原因。前者使用key的顺序1、2、……(ipairs),后者表的自然存储顺序(pairs)。

相关文章

  • Lua面向对象之多重继承、私密性详解

    Lua面向对象之多重继承、私密性详解

    这篇文章主要介绍了Lua面向对象之多重继承、私密性详解,本文讲解了多重继承之在多个类中查找一个字段、多重继承之创建继承多个类的子类、类的私密性等内容,需要的朋友可以参考下
    2014-09-09
  • Lua中的metatable介绍

    Lua中的metatable介绍

    这篇文章主要介绍了Lua中的metatable介绍,Lua 中的每个值都可以用一个 metatable,个 metatable 就是一个原始的 Lua table,它用来定义原始值在特定操作下的行为,要的朋友可以参考下
    2015-04-04
  • Lua脚本语言简明入门教程

    Lua脚本语言简明入门教程

    这篇文章主要介绍了Lua脚本语言简明入门教程,本文简洁干练,可以让一个有编程基础的快速的学会Lua脚本语言,需要的朋友可以参考下
    2014-09-09
  • Lua math.fmod使用时的小数问题

    Lua math.fmod使用时的小数问题

    这篇文章主要介绍了Lua math.fmod使用时的小数问题,math.fmod用于取模运算,使用小数时可能会遇到不可预料的结果,所以应该避免使用小数,需要的朋友可以参考下
    2015-06-06
  • Lua脚本语言基本语法快速入门教程

    Lua脚本语言基本语法快速入门教程

    这篇文章主要介绍了Lua脚本语言基本语法快速入门教程,本文是一个简易教程,快速的罗列了常用语法,有一定编程语言基础的同学更容易看芯片,需要的朋友可以参考下
    2015-07-07
  • Lua在各个操作系统中的开发环境配置教程

    Lua在各个操作系统中的开发环境配置教程

    这篇文章主要介绍了Lua在各个操作系统中的开发环境配置教程,包括Mac OS和Windows和Linux这三大系统下的安装,需要的朋友可以参考下
    2015-05-05
  • Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享

    Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享

    这篇文章主要介绍了Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享,需要的朋友可以参考下
    2015-04-04
  • Lua学习笔记之数据结构

    Lua学习笔记之数据结构

    这篇文章主要介绍了Lua学习笔记之数据结构,本文讲解了数组、矩阵、链表、队列等内容,需要的朋友可以参考下
    2014-09-09
  • 浅析Lua编程中的异常处理

    浅析Lua编程中的异常处理

    这篇文章主要介绍了浅析Lua编程中的异常处理,是Lua入门学习中的基础知识,要的朋友可以参考下
    2015-05-05
  • Lua判断字符串前缀是否为指定字符的3种方法

    Lua判断字符串前缀是否为指定字符的3种方法

    这篇文章主要介绍了Lua判断字符串前缀是否为指定字符的3种方法,本文还对三种方法分别做了性能测试,需要的朋友可以参考下
    2015-04-04

最新评论