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与前边不连续。


Lua教程-table表_第1张图片

你可能感兴趣的:(Lua,Lua基础教程)