• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua中的table学习笔记

Lua中的table学习笔记

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了Lua中的table学习笔记等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

table 在 Lua 里是一种重要的数据结构,它可以说是其他数据结构的基础,通常的数组、记录、线性表、队列、集合等数据结构都可以用 table 来表示,甚至连全局变量(_G)、模块、元表(metatable)等这些重要的 Lua 元素都是 table 的结构。可以说,table  是一个强大而又神奇的东西。

table 特性

在之前介绍 Lua 数据类型时,也说过了 table 的一些特性,简单列举如下(详情可查看之前的介绍):

1.table是一个“关联数组”,数组的索引可以是数字或者是字符串
2.table 的默认初始索引一般以 1 开始
3.table 的变量只是一个地址引用,对 table 的操作不会产生数据影响
4.table 不会固定长度大小,有新数据插入时长度会自动增长
5.table 的方法函数

Lua 5.2.2 内置有以下 7 中对 table 操作的方法:

concat

函数 table.concat 主要用来把表里的每个元素通过一个分隔符(separator)连接组合起来,用法:

table.concat(table, sep,  start, end)
</div>

上面除 table 外, sep、start、end 这三个参数都是可选的,并且顺序读入的,如果没指定传入,函数 concat 会采用默认值(分隔符 sep 的默认值是空字符, start 的默认值是 1, end 的默认值是数组部分的总长)去执行。
local tbl = {"apple", "pear", "orange", "grape"}
 
print(table.concat(tbl))
 
print(table.concat(tbl, "、"))
 
print(table.concat(tbl, "、", 2))
 
print(table.concat(tbl, "、", 2, 3))
</div>

对于密集型的字符并接,table.concat 比用 ".." 连接更高效,下面是用 time 测试的效果:

local str = {}
for i = 1, 10000 do
    str[i] = "str"
end
print(table.concat(str))
--real  0m0.005s
--user  0m0.003s
--sys   0m0.002s
</div>

local str = ""
for i = 1, 10000 do
    str = str .. "str"
end
print(str)
--real  0m0.041s
--user  0m0.037s
--sys   0m0.002s
</div>

insert

函数 table.insert 用于向 table 的指定位置(pos)插入一个新元素,用法:

table.insert(table, pos value)
</div>

参数 pos 是可选,默认是 table 末尾位置。

local tbl = {"apple", "pear", "orange", "grape"}
 
table.insert(tbl, "watermelon")
print(table.concat(tbl, "、"))
 
table.insert(tbl, 2, "watermelon")
print(table.concat(tbl, "、"))
</div>

maxn

函数 table.maxn 是返回 table 最大的正数索引值,用法:

table.maxn (table)
</div>

如果不存在正数的索引值,则返回 0。

local tbl = {"apple", "pear", "orange", "grape"}
print(table.maxn(tbl))
 
local tbl = {"apple", "pear", "orange", "grape", [26] = "watermelon"}
print(table.maxn(tbl))
 
local tbl = {[-1] = "apple", [-2] = "pear", [-3] = "orange", [-4] = "grape"}
print(table.maxn(tbl))
</div>

pack

函数 table.pack 是获取一个索引从 1 开始的参数表 table,并会对这个 table 预定义一个字段 n,表示该表的长度,用法:

table.pack(···)
</div>

该函数常用在获取传入函数的参数。

function table_pack(param, ...)
    local arg = table.pack(...)
    print("this arg table length is", arg.n)
    for i = 1, arg.n do
        print(i, arg[i])
    end
end
 
table_pack("test", "param1", "param2", "param3")
</div>

remove

函数 table.remove 用于删除 table 里某个值,用法:

table.remove (list [, pos])
</div>
参数 pos 可选,默认为删除 table 最后一个元素,并且参数 pos 的类型只能是数字 number 类型。

local tbl = {"apple", "pear", "orange", "grape"}
table.remove(tbl, 2)
print(table.concat(tbl, "、"))
 
table.remove(tbl)
print(table.concat(tbl, "、"))
</div>

sort

函数 table.sort 用于对 table 里的元素作排序操作,用法:

table.sort(tab

您可能想查找下面的文章:

相关文章

  • Lua中的loadfile、dofile、loadstring、require用法实例
  • Lua中使用table.concat连接大量字符串实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • C++遍历Lua table的方法实例
  • Lua中if语句嵌套的使用教程
  • Lua返回一个Closures函数实例
  • Lua中的metatable详解
  • Mac平台中编译安装Lua运行环境及Hello Lua实例
  • Lua教程(八):数据持久化
  • 实现Lua中数据类型的源码分享

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua基本语法
    • Lua判断一个目录或文件是否存在的方法
    • Lua在windows下的安装及环境配置
    • Lua 数学库的所有函数功能作用一览
    • Lua中table的一些辅助函数介绍
    • Nginx+lua 实现调用.so文件
    • Lua中函数与面向对象编程的基础知识整理
    • 详解Lua中的数据类型
    • Lua中的table浅析
    • Lua和C++语言的交互详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有