• lua的table库中的常用函数总结


    table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: 
    (1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; 
    (2).table 的默认初始索引一般以 1 开始; 
    (3).table 的变量只是一个地址引用,对 table 的操作不会产生数据影响; 
    (4).table 不会固定长度大小,有新数据插入时长度会自动增长; 
    (5).table 所有索引值都需要用 “[“和”]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引; 
    (6).table 所有元素之间,总是用逗号 “,” 隔开;

    lua提供了一些辅助函数来操作table,例如insert、remove等。 
    %———————————————————————————————————-% 
    1、table.insert  and table.remove 
    table.insert将一个元素插入到指定位置:。 
    举例1:

    t = {1, 2, 3}
    table.insert(t, 1, 4}
    • 1
    • 2
    • 1
    • 2

    t的结果将是{4, 1, 2, 3} 
    举例2:

    t={};
    table.insert(t,"a");
    table.insert(t,"b");
    table.insert(t,"c");
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    结果是: 

    1 : a 
    2 : b 
    3 : c 

    insert的第二个参数是可以省略的,这样就会插入到数组的最后,从而不必移动其他元素。 
    同样地,table.remove是从数组中移除(并返回)一个元素,table.remove(t,1)将移除t中下标是1的元素,如果不指定移除位置,则移除最后一个。 
    %———————————————————————————————————-%

    2、table.sort() 
    另一个有用的函数是sort,对数组进行排序,如果没有提供排序函数,默认是<操作。这里不仅仅是数,对字符串也有效。 
    举例1:

    a = {1,3,2,6,4,8,7,5}  print('排序前:',a)
    table.sort(a)     print('排序后:',a)
    • 1
    • 2
    • 1
    • 2

    结果: 
    排序前: 

    1 : 1 
    2 : 3 
    3 : 2 
    4 : 6 
    5 : 4 
    6 : 8 
    7 : 7 
    8 : 5 

    排序后: 

    1 : 1 
    2 : 2 
    3 : 3 
    4 : 4 
    5 : 5 
    6 : 6 
    7 : 7 
    8 : 8 

    举例2:

    name = {"you" ,"me", "him","bill" }
    --table.sort - only works with arrays!
    table.sort(name)
    for k, v in ipairs( name) do
         print( k,v)
    end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果如下: 
    1 bill 
    2 him 
    3 me 
    4 you 
    %———————————————————————————————————-%

    3、table.concat() 
    格式:table.concat(table, sep, start, end) 
    concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长。 
    举例:

    spring = {"众里寻他千百度", "蓦然回首", "那人却在灯火阑珊处"}
    print('一:',table.concat(spring, ","))
    print('二:',table.concat(spring, ",",1,2))
    print('三:
    ',table.concat(spring, "
    ",1,3))
    num = {1 ,2, 3,4,5 ,6}
    print('大小比较:',table.concat (num ,"<"))
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果如下: 
    一: 众里寻他千百度,蓦然回首,那人却在灯火阑珊处 
    二: 众里寻他千百度,蓦然回首 
    三: 
    众里寻他千百度 
    蓦然回首 
    那人却在灯火阑珊处 
    大小比较: 1<2<3<4<5<6 
    %———————————————————————————————————-%

    4、table.maxn() 
    含义:table.maxn()函数返回指定table中所有正数key值中最大的key值。 如果不存在key值为正数的元素, 则返回0。 此函数不限于table的数组部分。 
    举例1:

    cc = { 0.2654,0.0109,  0.3575,  0.8749,  0.4324,0.1932}
    print(cc)
    key = table.maxn(cc) 
    print('最大的key值为:',key)
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    结果: 

    1 : 0.2654 
    2 : 0.0109 
    3 : 0.3575 
    4 : 0.8749 
    5 : 0.4324 
    6 : 0.1932 

    最大的key值为: 6 
    举例2:

    apple = {"a" ,"p",[5]="e"}
    print(table.maxn(apple)) 
    duck = {[-2]=3,[-1]=0}
    print(table.maxn(duck)) 
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    结果如下: 


    %———————————————————————————————————-%

    5、table.getn() 
    含义:返回table中元素的个数 
    举例:

    t1 = {1, 2, 3, 5}
    print(getn(t1))
    • 1
    • 2
    • 1
    • 2

    结果:4 
    %———————————————————————————————————-%

    6、table.pack()和table.unpack() 
    table.pack函数是获取一个索引从 1 开始的参数表 table,并会对这个 table 预定义一个字段 n,表示该表的长度。 
    举例:

    t = table.pack("test", "param1", "param2", "param3")
    print(t)
    • 1
    • 2
    • 1
    • 2

    结果: 

    1 : test 
    2 : param1 
    3 : param2 
    4 : param3 
    n : 4 

    table.unpack函数用于返回 table 里的元素,用法:table.unpack(table, start, end),其中参数 start 是开始返回的元素位置,默认是 1,参数 end 是返回最后一个元素的位置,默认是 table 最后一个元素的位置,参数 start、end 都是可选 
    举例:

    t = {"Lua", "C++", "Python", "Java"}
    print('(1):
    ',t)
    print('(2):',table.unpack(t))
    a, b, c, d = table.unpack(t)
    print('(3):',b)
    print('(4):',a, b, c, d)
    print('(5):',table.unpack(t, 2))
    print('(6):',table.unpack(t, 2, 3))
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    结果如下: 
    (1): 

    1 : Lua 
    2 : C++ 
    3 : Python 
    4 : Java 

    (2): Lua C++ python Java 
    (3): C++ 
    (4): Lua C++ Python Java 
    (5): C++ Python Java 
    (6): C++ Python

  • 相关阅读:
    Shell编程之运算符和环境变量配置文件
    Shell编程之变量
    PCI BAR设置过程[转]
    基于ARM的SoC设计入门[转]
    负载均衡
    [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
    VC/DDK/DriverWorks开发环境配置
    windows下注册表脚本编写
    _cdecl与_stdcall区别
    在C语言中破坏函数调用堆栈
  • 原文地址:https://www.cnblogs.com/daochong/p/7363649.html
Copyright © 2020-2023  润新知