Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查

LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查

介绍

在Lua中和C#中对lua的表进行增删改查是比较常用的表操作,这里主要对比一下lua和C#中分别怎么对表进行增删改查

Lua表

lua表初始化

  1. mytable = {}

lua移除引用

  1. mytable = nil

lua中向表中添加数据

  1. 向xxtable中的index位置插入一个xx数据 table.insert(xxtab,index,xx)

  2. 向xxtable中末尾位置插入一个xx数据 table.insert(xxtab,xx)

  3. 向xxtab总末尾位置加入一个yytab表数据table.insert(xxtab,yytab)

  4. 向xxtab中index位置值修改为xxx(没有值则相当于添加数据)xxtab[index] = xxx

lua中表中移除数据

  1. lua中移除表中的指定索引数据 table.remove(xxtab,index)
  2. lua中移除表中末尾数据 table.remove(xxtab)

lua表中连接数据

  1. lua连接数据 table.concat(xxtab) 比如{"a","b","c",5,"d"} 输出string类型 "abc5d"
  2. 用x符号连接表中数据 table.concat(xxtab,"x") 比如{"a","b","c",5,"d"} 输出string类型 "axbxcx5xd"
  3. 用x符号连接表中2到4的数据 table.concat(xxtab,"x",2,4) 比如{"a","b","c",5,"d"} 输出string类型 "bxcx5"

lua表中数据排序

  1. lua表默认排序 table.sort(table)
  2. lua表自定义function(a,b)条件排序 table.sort (table, funtion(a,b))

获取lua表长度

  1. lua中获取表的长度 #table

获取表中最大值

  1. lua中获取xxtab表中的最大值 table.maxn(xxtab) 比如{1,2,3,4,7} 输出7

UnityC#中LuaTable

  1. 获取原表 LuaTable GetMetaTable()
  2. 转成LuaArrayTable LuaArrayTable ToArrayTable()
  3. 转成LuaDictTable LuaDictTable ToDictTable()
  4. 转成LuaDictTable<K, V> LuaDictTable<K, V> ToDictTable<K, V>()
  5. 转成object[] object[] ToArray()
  6. 打印表内存地址 string ToString()
  7. 修改值和获取值
    修改:tab[index] = xxx 或者 tab["xxx"] = xxx
    修改:table.SetTable< T >(string,T)
    修改:table.RawSet<K, V>(K,V)
    修改:RawSetIndex< T >(int , T)
    获取:T RawGetIndex< T >(int)
    获取:tab[index]或者tab["xxx"]
    获取:T table.GetTable< T >(string)
    获取:V table.RawGet<K, V>(K)
    lua表如下

    修改和复制代码如下:

    打印如下:
  8. 获取长度 tab.Length
  9. LuaTable中的func方法
    获取方法 GetLuaFunction("key")
    获取方法 RawGetLuaFunction("key")
    执行方法无返回值无参数 func1.Call()
    执行方法无返回值 func1.Call< T >(T) 支持多参数这里不详细写了
    执行方法有返回值无参数 R func1.Invoke< R >()
    执行方法有返回值有参数 R func1.Invoke<T , R>(T) 支持多参数这里不详细写了
    lua表如下:

    代码如下:

    打印如下:

UnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>

它们都继承自IEnumerable< T >相当于 Array Dictionary List使用方式

遍历可用下面的方法

csharp 复制代码
	var itor = tab.GetEnumerator();
    while (itor.MoveNext())
    {
        Debug.LogError("itor.Current.Key = " + itor.Current.Key + " ,itor.Current.Value = " + itor.Current.Value);
    }

    itor.Dispose();

还可以辅助LuaTable转换成对应的List和Dictionary<K,V>

相关推荐
PfCoder6 小时前
C#中定时器之System.Timers.Timer
c#·.net·visual studio·winform
Tingjct7 小时前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
C雨后彩虹7 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试
飞机和胖和黄8 小时前
考研之王道C语言第三周
c语言·数据结构·考研
达文汐8 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
一匹电信狗8 小时前
【LeetCode_21】合并两个有序链表
c语言·开发语言·数据结构·c++·算法·leetcode·stl
Gorgous—l8 小时前
数据结构算法学习:LeetCode热题100-多维动态规划篇(不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离)
数据结构·学习·算法
一条大祥脚9 小时前
26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路
数据结构·算法
星空露珠9 小时前
速算24点所有题库公式
开发语言·数据库·算法·游戏·lua
李老师讲编程10 小时前
C++信息学奥赛练习题-杨辉三角
数据结构·c++·算法·青少年编程·信息学奥赛