-
Notifications
You must be signed in to change notification settings - Fork 428
TArray和TMap的使用
siney edited this page Dec 10, 2018
·
3 revisions
slua支持TArray和TMap,到遇到TArray和TMap的返回值时,slua会自动将其映射为LuaArray和LuaMap,LuaArray和LuaMap提供了必要的成员方法,用于便捷实用TArray和TMap。
Num() 返回数组的元素个数
Get(i) 返回第i个元素,与lua table不同,TArray的第一个元素位置是0
Add(v) 添加一个元素v到TArray的尾部
Insert(i,v) 插入一个元素v到位置i
Remove(i) 删除位置i的元素
Clear() 清空TArray
LuaArray提供快速遍历的函数支持,你可以直接使用pairs函数遍历TArray,例如
for i,v in pairs(arr) do
print("arr item",i,v)
end
Num() 返回TMap元素个数
Get(k) 返回以k为key的元素
Add(k,v) 添加一个以k为key的元素v,相当于tmap[k]=v
Remove(k) 删除一个以k为key的元素
Clear() 清空TMap
LuaMap同样支持便捷的遍历函数,例如:
for k,v in pairs(map) do
print("map item",k,v)
end
需要注意的是,如果TArray和TMap是uobject的property,则push的数据为指针传递,不copy数据,如果在lua侧修改了数据,则对应的c++侧的属性数据也会修改;如果是函数返回值则都是copy完整的数据给到lua,当数据copy完成后,c++侧的TArray、TMap对象和lua对象就是2份了,如果TArray/TMap保存的的是UObject指针,lua会管理UObject的生命周期,直到lua侧对应的userdata被回收后,UObject的元素的引用才会解除