table库的学习笔记

一、预备

table(表)、

实现了关联数组(具有特殊索引方式的数组),可以使用数字、字符串或除nil以外的所有类型的值。

table没有固定的大小,可以动态的添加任意数量的对象到table中;

基于table可以以一种简单、统一和高效的方式表示普通数组、符号表、集合、记录、队列和其他数据结构。

table的创建是通过“构造表达式”完成的。如:a = {}; k = "x"; a[k] = 10;

可以将字段名作为索引,如 a.name 等价于 a["name"](而不是a[name])

数组通常使用 1 作为索引的起始值: for i = 1, #a do print(a[i]) end 

二、table库的操作

1、table.concat(table, sep,  start, end)

concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置

的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都是可选的, 分隔符的默认值是空字符, start的默

认值是1, end的默认值是数组部分的总长.sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数, 但如果

要指定靠后的参数, 必须同时指定前面的参数.


local org = {
     {"www.baidu.com", "202.108.22.5"},
     {"www.google.com","74.125.128.147"},
}
local cnt = table.getn(org)
local index = 1
while index <= cnt do	   
   print( table.concat(org[index],"\t") )
   index = index + 1
end
输出结构为:
www.baidu.com 202.108.22.5 
www.google.com 74.125.128.147 

分析: table.concat不能连接嵌套外层的table,只能连接最内层的table


问题:若table以字段名作为索引时table.concat将不起作用?(有待解决)


local org = {
     {hostname = "www.baidu.com", ip = "220.120.22.12"},
     {hostname = "www.google.com",ip = "67.213.12.32"},
}


2、table.insert(table, pos, value)

table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.

local org = {
     { "www.baidu.com",  "220.120.22.12"},
     { "www.google.com", "67.213.12.32"},
}
table.insert( org, { "www.test.com", "222.222.222.222"} )
local cnt = table.getn(org)
local index = 1

while index <= cnt do	   
   print( table.concat(org[index],"\t") )
   index = index + 1
end
输出结果为:


www.baidu.com 220.120.22.12
www.google.com 67.213.12.32
www.test.com 222.222.222.222


3、table.maxn(table)

table.maxn()函数返回指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0. 此函数不限

于table的数组部分.

key_value = { [1] = "www.baidu.com", [2] = "www.google.com", [5] = "www.test.com" }
print( table.maxn(key_value ) )

输出结果为: 5


4、table.remove(table, pos)

table.remove()函数删除并返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参

数可选, 默认为table长度, 即从最后一个元素删起.

local org = {
     "www.baidu.com", "202.108.22.5",
     "www.google.com","74.125.128.147",
}
local cnt = table.getn(org)
local index = 1
while index <= cnt do	   
   print( table.remove(org) )
   index = index + 1
end
输出结果为:

74.125.128.147
www.google.com
202.108.22.5
www.baidu.com


                                                                                                                         TO BE CONTINUE……

转载于:https://my.oschina.net/ijaychen/blog/86653

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值