lua table值调用

最近因为工作要求学习了lua,具体的lua如何我就不详细解释了,主要说一下table的下标调用这方面的东西。
1.什么是table?
table是lua中唯一的数据结构,与其他的语言的数据结构相比,比如c++的array以及lists,它实现了这些数据结构的功能同时功能更加强大,比如自带了搜索算法还有table的大小不必定义,可以自己动态增加的。
2.table下标问题
[color=blue]local a= {}[/color]
这就直接定义了a是一个table 注意:定义的时候 要么是字符串= 要么是["字符串"]= 要么是[数字]= 所有的key只能这样
[color=blue]a={x=13,["y"]=14,[3]="qewr"}[/color]
第一种 可以 使用 print(a.x/a["x"]) 输出13
第二种 使用print(a["y"]/a.y) 输出 14
简单来说:a.啥的只能针对于字符串下标,而a[]字符串和数字都可以 但是字符串得有""
3.table 默认下标
[color=blue]local a={[1]= 11,[2]= 12,[3]= 13,[4]=14}
local a={11, 12, 13,14}[/color]
上诉两种print(a[1]) 输出都是11 输出的结构是一样的

4.table中的table
[color=blue]local a = {
b = {12,22},
[1]={3,4},
{5,6}
}[/color]
此时的调用如上 使用 a.b 则是一个新的table
print(a.b[1])会输出12
但是使用print(a[1][1])的时候 却是会覆盖掉[1]={3,4}的 也就是会输出5,因为没有key值时,table中的元素会默认为1,所以以后使用的时候必须规避这种问题。
[color=red]同理
local a = {
--b = {12,22},
{7,8},
[1]={3,4},
{5,6},
[2]={9,10}
}
print(a[2][2]) 输出的结果会是6 因为默认排序的{5,6}会把[2]={9,10}覆盖掉。[/color]
在使用 XLua 进行 Lua 表操作时,LuaTable 是一个非常重要的类,它提供了与 Lua 表进行交互的功能。XLua 是一个将 Lua 集成到 Unity 中的库,支持在 C# 中操作 Lua 表,从而实现两者之间的数据传递和逻辑调用LuaTable 提供了多种操作方法,包括创建表、读取表中的值、写入表中的值、以及遍历表内容等。例如,可以通过 LuaTable 的构造函数来创建一个新的 Lua 表,也可以通过 XLua 提供的 API 从 Lua 脚本中获取已有的表。在 C# 中,可以通过 Get 方法读取 Lua 表中的值,也可以通过 Set 方法设置表中的键值对。此外,LuaTable 支持遍历表中的键值对,可以通过 GetEnumerator 方法实现对表中元素的迭代访问。 以下是一个简单的示例,展示如何使用 XLuaLuaTable 创建和操作 Lua 表: ```csharp using XLua; public class LuaTableExample { private LuaEnv luaEnv = new LuaEnv(); public void CreateTable() { // 创建一个新的 LuaLuaTable table = luaEnv.NewTable(); // 设置表中的键值对 table.Set("key1", "value1"); table.Set("key2", 123); // 获取表中的值 string value1 = table.Get<string>("key1"); int value2 = table.Get<int>("key2"); // 遍历表中的键值对 using (var iter = table.GetIter()) { while (iter.Next()) { var key = iter.Key; var val = iter.Value; // 输出键值对 UnityEngine.Debug.Log($"Key: {key}, Value: {val}"); } } } } ``` 通过 LuaTable,开发者可以在 C# 中灵活地操作 Lua 表,从而实现更复杂的逻辑交互。这种机制在 Unity 开发中特别有用,特别是在需要动态配置或数据驱动的场景中 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值