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

    输出结果:

  • 相关阅读:
    使用Mint-UI的Loadmore实现上拉加载更多和下拉刷新
    JavaScript的日常所得
    web网站性能优化整理
    ArrayBuffer
    Blob
    FormData
    FileReader
    websocket的实践
    Vue CLI 3的Vue.config.js
    css行高line-height的一些深入理解及应用
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/9219459.html
Copyright © 2011-2022 走看看