Lua教程-table表

Lua语言中的table可以用来解决模块、包和对象,相对于其他语言table的索引下标是从1开始的,而不是0。

table(表)构造

最简单的构造函数是{},可以用来创建一个空表,可以直接初始化一个数组:

---创建空的表
local mytable = {}
---指定值
mytable[1] = "Hello Lua"
---清空
mytable = nil

table 函数操作

方法说明
table.concat (table [, sep [, i [, j ] ] ])sep为填充字符,默认为空白,将table[i]到table[j]连城字符串
table.insert (table, [pos ,] value)tablede 的pos位置插入value值
table.maxn (table)指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0
(Lua5.2之后该方法已经不存在了,本文使用了自定义函数实现)
table.remove (table [, pos])删除table中pos位置的元素,默认值为表的长度即删除最后一个
若删除的是中间位置,则其后的索引值都会减一
table.sort (table [, comp])对table进行升序排列

下面对上边的操作函数分别举例说明:

  1. table.concat (table [, sep [, i [, j ] ] ])连接
local mytable = {"hello","lua","ceshi"}
print(table.concat(mytable,"--"))
-----输出结果------
hello--lua--ceshi
  1. table.insert (table, [pos ,] value)插入新元素
local mytable = {"hello","lua","ceshi"}
table.insert(mytable , "sport")
print(table.concat(mytable, "|"))
-----输出结果------
hello|lua|ceshi|sport
  1. table.maxn (table) 获取最大值
    Lua5.2后已删除,所以重新写了一个方法供参考,注意只是数字类型的可以使用。
function table_maxn(t)
    local tmp=nil;
    for k, v in pairs(t) do
        if(tmp==nil) then
            tmp=v
        end
        if tmp < v then
            tmp = v
        end
    end
    return tmp
end
tbl = {[1] = 10, [2] = 100, [3] = 60, [26] =50}
print("tbl 最大值:", table_maxn(tbl))
-----输出结果------
tbl 最大值:	100
  1. table.remove (table [, pos]) 删除指定位置元素
local mytable = {"hello","lua","ceshi"}
table.remove(mytable)
print(table.concat(mytable,"-"))
-----输出结果------
hello-lua
  1. table.sort (table [, comp])排序
local mytable = {[1] = 10, [2] = 100, [3] = 60, [4] =50}
table.sort(mytable)
print("table 排序:", table.concat(mytable,"-"))
-----输出结果------
table 排序:	10-50-60-100

table其他说明

table的长度可以使用#获取。

local mytable = {[1] = 10, [2] = 100, [3] = 60, [4] =50}
print("table 长度" , #mytable)
-----输出结果------
table 长度	4

注意:使用#获取table长度时主要遇到不连续的索引则中断,所以使用时要注意连续

local mytable = {[1] = 10, [2] = 100, [3] = 60, [5] =50}
print("table 长度" , #mytable)
-----输出结果------
table 长度	3

以上示例长度变为3,因为最后一个元素索引为5与前边不连续。


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨香异境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值