2017-05-25 50 views
2

所以我想爲lua和irrlicht編寫一個程序,目前我正在創建一個函數用於創建可實時調用的網格(在這種情況下是一個簡單的三角形)從命令行。例如,在程序運行時,如果我在命令行中寫入「addMesh({{0,0,0},{5,0,0},{0,0,5}})」, ,在這三個座標處將形成一個三角形,其邊角。分析lua_State中表中的元素

現在,我知道如何製作可以從命令行調用的函數等,這不是我的問題。我的問題是這樣的:

int addMesh(lua_State* L){ 
    luaL_checkType(L, 1, LUA_TTABLE); 
} 

至於我到目前爲止一直在教導,如果你想(舉例)如果發送的第一個參數是一個表,你可以使用luaL_checktype(L,1, LUA_TTABLE)。那麼,在這個例子中,這將是事實。但是我怎樣才能訪問數據中的數據,就像其中的三個頂點中的任何一個一樣?

我需要訪問它們並分析它們的數據,以便我可以從它們創建一個簡單的網格。任何幫助都將不勝感激。

回答

2

後你選擇了它是一個真正的表,你可以用函數遍歷它像lua_gettablelua_rawget

Programming in Lua是一個很好的起點,其他持久的資源,如lua-users也可能提供有用的例子。

此外,當您開始在Lua周圍編寫C代碼時,您的語言版本的參考手冊將成爲您最好的朋友。您可以在官方Lua網站上使用find it

希望有所幫助。

+0

感謝提示^^我一直在玩一下,我可以在通過lua_state發送時成功訪問數組的成員。但是,問題仍然是當表中有一個表格時(例如,我發送給函數的表格中有三個表格)。我不知道如何訪問這些。或者說,我可能能夠以類似的方式訪問這些數據,因爲在沒有任何嵌套表的情況下訪問這些數據,但是我不知道如何訪問大數組中的數組中的元素。你有沒有更多的指針? –

+0

@JensLomander lua_rawget如果你可以訪問數組的元素,那麼你可以檢查一個元素是否是一個表,並將rawget應用到它以及:) – iehrlich