min , max = table.range( tarr )
io.open()
tarr = { 123;456;77;99 };//创建数组,数字索引默认从1开始
io.print( table.range( tarr ) )
table.insert(tab,value ,pos = 1)
t={}
table.insert(t,1)//插入1
table.insert(t,2)//插入2
table.insert(t,3)//插入3
table.insert(t,1236,2)//在第二个位置插入1236
io.open()
for(name,value in t){
io.print(name,value)
}
value = table.remove (tab ,pos = 1)
t={}
table.insert(t,1)//插入1
table.insert(t,2)//插入2
table.insert(t,3)//插入3
table.insert(t,1236,2)//在第二个位置插入1236
table.remove(t,3)//移除第三个位置的数值
io.open()
for(name,value in t){
io.print(name,value)
}
如果您不希望在删除无素后改变其他的元素的位置,可以使用赋值为null的方法删除一个元素
tab = {"a";"b";"c";"d";"e"}
table.remove (tab ,2); //移除第二个元素,后面的元素全部向前移动一个单位.
tab[2] = null; //删除第二个元素,不会改变其他元素的位置。
io.open()
for name,value in tab{
io.print( name,value);
}
table.push(tab ,value[, value , ... ] )
t={}
io.open()
table.push(t,1,2,3)
io.print(table.tostring(t))
table.insert(t,1236,2)
io.print(table.tostring(t))
table.remove(t,2)
io.print(table.tostring(t))
table.pop(tab [, n] )
//实现一个堆栈类(堆栈必须用push压入pop弹出)
class Stack {
@{ _get = self }
}
Stack.push = function( ... ){
table.push( owner , ... );
}
Stack.pop = function( n ){
return table.pop( owner , n );
}
sk = Stack();//创建新的堆栈对象
sk.push("a","b","c") //压入一个或多个参数
io.open();
io.print( sk.pop(2) ) //弹出一个或多个参数
table.sort (tab [, comProc])
io.open()
tab ={3;4;7;8;6;5;2;1}
table.sort(tab);
//看看排序后的结果
for i=1; #tab; 1 {
io.print( tab[ i ] );//显示 1 2 3 4 5 6 7 8
}
//table.sort会调用这个函数比较元素大小
comProc = function(b) begin
return owner > b ;//反过来排序
end;
table.sort(tab,comProc);
//看看排序后的结果
for i=1; #tab; 1 {
io.print( tab[ i ] );//显示 8 7 6 5 4 3 2 1
}
//支持table中的键域排序,参数tab为table对象,f为排序回调函数(可省略)
function kpairs(tab,f) begin
//kpairs被调用时创建闭包
var tarr = {}
//字典中的数据复制到一个数组中然后进行排序
for k in tab
table.push(tarr, k);
table.sort(tarr, f);//调用默认的排序函数f对字典中的键进行排序
var i = 0 //迭代器计数器.(在闭包中保存值)
return function () { //迭代函数
i = i + 1
if(not tarr[ i ])
return null
else
return tarr[ i ], tab[tarr[ i ]]
}
end
//table必须是同类型,若含有数组与字典一起的table表不适用
tab ={c=2;d=7;e=4;g=2;h=8;a=1;b=6;f=5;i=1;j=1;k=9};
io.open();
for k,v in kpairs(tab)
io.print(k,v); //table中的键按字母顺序排序了,并不是按值排列
table.reverse(tab)
io.open();
tab = { 1;2;3;4;5;6;7}
table.reverse(tab); //反序排列
for i = 1; #tab;1{
io.print( tab[ i ] )
}//竖排显示 7 6 5 4 3 2 1
table.unpack(tab,i=1,e=#tab)
table.left(tab,len)
table.right(tab,len)
import process;
io.open();
tab = { 1;2;3;4;5;6;7}
a,b,c,d,e = table.unpack(tab); //将数组全部拆分并返回。
io.print( table.unpack(tab,2,4) ); //返回第2个、第3个、第4个数组成员
io.print( a,b,c,d,e )
io.print( table.left(tab,4) ) //自左侧开始拆分指定长度数组元素
io.print( table.right(tab,4) ) //自右侧开始拆分指定长度数组元素
io.open();
tab = {1;2;3;a=123;b='456'}
str = table.tostring( tab ); //序列化为字符串(AAuto代码)
io.print( str ) //显示序列化后的字符串
for(k,v in tab){
io.print(v)//由于有键值对,用遍历显示数组
}
io.open();
tab = {1;2;3}
tab2 = {4;5;6}
tab3 = table.concat(tab,tab2 ); //将多个表拼接为一个表
io.print( table.unpack( tab3 ) ) //再拆分横显示显示
//如不拆分数组则序列化显示
for(i=1;#tab3;1){
io.print(tab3[ i ])
}
联系客服