zoukankan      html  css  js  c++  java
  • Lua中Table的学习

    --table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组、字典等
    --Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。
    
    mytable = {}
    print("mytable 的类型:",type(mytable)) 
    
    mytable[1] = "Lua"
    mytable["wow"] = "修改前"
    print("mytable 索引为 1 的元素:",mytable[1])
    print("mytable 索引为 wow 的元素:",mytable["wow"])
    
    --两个table指向的是同一块内存
    lgstable = mytable
    
    print("lgstable 索引为 1 的元素:",lgstable[1])
    
    print("mytable 索引为 wow 的元素:",mytable["wow"])
    lgstable["wow"] = "修改后"
    print("mytable 索引为 wow 的元素:",mytable["wow"])
    
    --释放变量
    lgstable = nil
    print("lgstable :",lgstable) 
    
    --mytable依然可以访问
    print("mytable 索引为 wow 的元素:",mytable["wow"])
    
    mytable = nil
    print("mytable :",mytable) 
    
    --[[
    以上代码执行结果:
    
    mytable 的类型:    table
    mytable 索引为 1 的元素:    Lua
    mytable 索引为 wow 的元素:    修改前
    lgstable 索引为 1 的元素:    Lua
    mytable 索引为 wow 的元素:    修改前
    mytable 索引为 wow 的元素:    修改后
    lgstable :    nil
    mytable 索引为 wow 的元素:    修改后
    mytable :    nil
    --]]
    
    --table的操作
    
    
    --table连接表中的元素为字符串
    fruits = {"banana","orange","apple"}
    --返回table连接后的字符串
    print(table.concat(fruits))
    --指定连接符
    print(table.concat(fruits,','))
    --指定索引
    print(table.concat(fruits,',',2,3))
    
    --[[
    运行结果:
    bananaorangeapple
    banana,orange,apple
    orange,apple
    --]]
    
    
    
    --插入和移除
    fruits2 = {"banana","orange","apple"}
    --末尾插入
    table.insert(fruits2,'mango')
    print(fruits2[4])
    --索引为2的键处插入
    table.insert(fruits2,2,'grapes')
    print(fruits2[2])
    
    print(fruits2[5])
    table.remove(fruits2)
    print(fruits2[5])
    
    --[[
    运行结果:
    mango
    grapes
    mango
    nil
    --]]
    
    
    --table排序
    fruits3 = {"banana","orange","apple", "grapes"}
    print("排序前")
    for i,v in ipairs(fruits3) do
        print(i,v)
    end
    
    table.sort(fruits3)
    
    print("排序后")
    for i,v in ipairs(fruits3) do
        print(i,v)
    end
    
    --获取table的长度
    print(#fruits3)
    print(table.getn(fruits3))

    以下为table的补充内容:

    table.insert(t, pos, value) 在t指定位置插入元素
    table.insert(t, value) 在t末尾插入元素

    table.remove(t, pos) 在t指定位置删除元素,并返回删除的元素
    table.remove(t) 在t末尾删除元素,并返回删除的元素

     1 a = {};
     2 
     3 table.insert(a,1, 12)
     4 table.insert(a,2, 45)
     5 table.insert(a,50)
     6 
     7 for i,v in ipairs(a) do
     8     print(i,v)
     9 end
    10 
    11 print("-----------");
    12 
    13 b = table.remove(a, 1);
    14 
    15 print("b = " .. b);
    16 
    17 table.remove(a);
    18 
    19 for i,v in ipairs(a) do
    20     print(i,v)
    21 end

    输出结果:

  • 相关阅读:
    java arraylist int[] 转换
    nginx installl
    "segmentation fault " when "import tensorflow as tf"
    preprocessing MinMaxScaler
    java对集合的操作,jxl操作excel
    IPython安装过程 @win7 64bit
    JavaScript学习——创建对象
    JavaScript学习——理解对象
    JavaScript学习——Math对象
    JavaScript学习——Global对象
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/9219459.html
Copyright © 2011-2022 走看看