我希望能夠做到以下幾點:Lua的就地初始化表的順序
MyObject:SetSize({ 10.0, 20.0 })
但是,當我遍歷這個在C端(是的setSize C函數)。參數的順序是隨機的。
這是C++側處理表:
glm::vec2 State::PopVec2()
{
glm::vec2 v();
lua_pushnil(ls); // first key
int i = 0;
while(lua_next(ls, -2)) // pops key and pushes next key and value
{
// v[0] is x coordinate. v[1] is y coordinate.
v[i] = (float)lua_tonumber(ls, -1); // get number
lua_pop(ls, 1);// pop value but leave next key.
++i;
}
lua_pop(ls, 1); // pop table
return v;
}
我怎麼能保證一致的順序,而不必陷入困境的LUA端的代碼? (所以基本上在C++端解決這個問題)
或者,我應該在lua端使用什麼作爲「Vec2」等效物?
你可以在訪問表的C端顯示代碼嗎? – ryanpattison
@rpattiso添加 – akaltar
你可以使用['rawgeti'來獲取ipairs行爲](http://stackoverflow.com/questions/14149178/how-to-produce-ipairs-as-opposed-to-pairs-behavior-in -the-c-api) – ryanpattison