2010-07-23 34 views
0

在Lua中,你可以創建一個表的鍵是自己表:在Lua與C API創建表鍵的表

t = {} 
t[{1,2}] = 2 

我想知道怎麼做使用C類似的事情API。也就是說,我正在寫一個可從Lua調用的C函數,它將返回一個帶有表鍵的表。我試圖把一個表作爲一個鍵,然後使用lua_settable,但它似乎什麼都不做。

編輯:相關代碼:

lua_createtable(L, 0, n); 
for(i = 0; i < n; ++i){ 
    // push the key table 
    lua_createtable(L, 2, 0); 
    for(j = 0; j < 2; ++j){ 
     lua_pushinteger(L, j+1); 
     lua_pushinteger(L, j); 
     lua_settable(L, -3); 
    } 
    // push the value table 
    lua_createtable(L, 4, 0); 
    for(j = 0; j < 4; ++j){ 
     lua_pushinteger(L, j+1); 
     lua_pushnumber(L, j); 
     lua_settable(L, -3); 
    } 
    lua_settable(L, -3); 
} 

編輯:我是啞巴;我在末尾使用了lua_objlen(L, -1)來檢查表的大小,由於沒有整數鍵控條目,返回0。另外,在處理表格的Lua代碼中,我使用了ipairs而不是pairs。愚蠢的錯誤。

回答

0

我正在以錯誤的方式檢查表條目。我用解決方案編輯了這個問題。

0

推動一個表作爲關鍵並使用lua_settable是正確的。最有可能的是,你只是忘了推一個值,並有效地做了t = {{} = nil},這當然沒有。