Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
2023-12-22 11:50:03
    		LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
介绍
在Lua中和C#中对lua的表进行增删改查是比较常用的表操作,这里主要对比一下lua和C#中分别怎么对表进行增删改查
Lua表
lua表初始化
- mytable = {}
lua移除引用
- mytable = nil
lua中向表中添加数据
-  向xxtable中的index位置插入一个xx数据 table.insert(xxtab,index,xx) 
-  向xxtable中末尾位置插入一个xx数据 table.insert(xxtab,xx) 
-  向xxtab总末尾位置加入一个yytab表数据table.insert(xxtab,yytab) 
-  向xxtab中index位置值修改为xxx(没有值则相当于添加数据)xxtab[index] = xxx 
lua中表中移除数据
- lua中移除表中的指定索引数据 table.remove(xxtab,index)
- lua中移除表中末尾数据 table.remove(xxtab)
lua表中连接数据
- lua连接数据 table.concat(xxtab) 比如{“a”,“b”,“c”,5,“d”} 输出string类型 “abc5d”
- 用x符号连接表中数据 table.concat(xxtab,“x”) 比如{“a”,“b”,“c”,5,“d”} 输出string类型 “axbxcx5xd”
- 用x符号连接表中2到4的数据 table.concat(xxtab,“x”,2,4) 比如{“a”,“b”,“c”,5,“d”} 输出string类型 “bxcx5”
lua表中数据排序
- lua表默认排序 table.sort(table)
- lua表自定义function(a,b)条件排序 table.sort (table, funtion(a,b))
获取lua表长度
- lua中获取表的长度 #table
获取表中最大值
- lua中获取xxtab表中的最大值 table.maxn(xxtab) 比如{1,2,3,4,7} 输出7
UnityC#中LuaTable
- 获取原表 LuaTable GetMetaTable()
- 转成LuaArrayTable LuaArrayTable ToArrayTable()
- 转成LuaDictTable LuaDictTable ToDictTable()
- 转成LuaDictTable<K, V> LuaDictTable<K, V> ToDictTable<K, V>()
- 转成object[] object[] ToArray()
- 打印表内存地址 string ToString()
- 修改值和获取值
 修改: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表如下
  
 修改和复制代码如下:
  
 打印如下:
  
- 获取长度 tab.Length
- 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使用方式
 遍历可用下面的方法
	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>
    			文章来源:https://blog.csdn.net/qq_42194657/article/details/135148401
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!