2 回答

TA貢獻1841條經驗 獲得超3個贊
首先我們要看一下我們要存儲的對象
存儲對象是一個lua的table結構
table結構在lua里可以看作是一種動態的數組
然而在lua里的table和C里的數組差別比較大,我們并不能直接把表簡單的傳過去,所以我們要把table轉化成一個c里可以存儲的方式,因此我們需要遍歷一下lua里的表
下面是大概的思路 具體的代碼你需要自己去寫
namelist = {} --這個用來存儲遍歷后展開的表的索引
valuelist = {} --這個用來存儲遍歷后展開的每一個值
typelist = {} --用來保存變量的類型
function saveTable(t,parent)
parent = parent or ""
for i,v in pairs(t) do
table.insert(namelist,i.."#"..parent) --將名字存入名字列表
table.insert(typelist,type(v)) --將對應變量的類型存入列表
table.insert(valuelist,v) --將變量存入列表
if type(v) == "table" then
saveTable(v,tostring(i).."#"..parent)
end
end
end
這里就可以將一個完整的表拆成索引 對應值 以及類型 存到3個表里
然后將3個表 傳給C,然后再由C把這個表重新組裝起來
測試的話 這樣
test = {1,2,3,4,{5,6,7},{{8},9}}
saveTable(test)
for i,v in pairs(namelist) do
print(v)
end
for i,v in pairs(valuelist) do
print(v)
end
for i,v in pairs(typelist) do
print(v)
end
就可以看到3個表的內部結構,然后C的話 只要通過類型判斷處理方法,是表的話就再建個數組
然后索引按照namelist里進行按層拆分就可以獲得了
- 2 回答
- 0 關注
- 1246 瀏覽
添加回答
舉報