2014-11-02 2 views
1

Я действительно не уверен в обработке таблиц в C API Lua. Интерфейс Я в настоящее время разрабатывает требует от меня, чтобы прочитать содержимое таблицы, данные моей C Функция:Lua: Чтение параметра таблицы из вызова функции c

example.lua:

myVector2 = {["x"]=20, ["y"]=30} 
setSomePosition(myVector2) 

функция C зарегистрировать как «setSomePosition»:

static int lSetSomePosition(lua_State *L) 
{ 
    //number of arguments 
    if(lua_gettop(L) != 1) 
    { 
     //error handling 
     return 0; 
    } 
    //Need your help with the following: 
    //extract tables values of indexes "x" and "y" 

    return 0; 
} 

Я знаю, что есть несколько способов обработки таблиц, из которых вам иногда нужно знать индексы, которые я делаю. Я сейчас просто запутался в этом, и чем больше я исследую, тем больше смущаюсь. Наверное, потому что я действительно не знаю, как описать, что мне нужно, в правильной терминологии.

бы реально оценить хороший комментировал пример кода, как вы бы заполнить пробел в моей C Функция :)

(Если у вас есть легко понять руководство по этой теме не против комментирования)

+2

http://www.lua.org/manual/5.1/manual.html#lua_getfield –

ответ

2
lua_getfield(L, 1, "x") //pushes a value of t["x"] onto the stack 
lua_tonumber(L, -1) //returns the value at the top of the stack 
lua_getfield(L, 1, "y") //pushes a value of t["y"] onto the stack 
lua_tonumber(L, -1) //returns the value at the top of the stack 
+0

, что делает положительный один в вызове lua_getfield стоять? это как когда вызов функции c получает 2 таблицы, я могу увеличить его на единицу, чтобы выталкивать значения из второй таблицы в стек? – InDieTasten

+1

@InDieTasten Это индекс стека первого аргумента (т. Е. Таблица). – IllidanS4

Смежные вопросы