Мне нужно выполнить операции над таблицами Lua от C, где таблицы рассматриваются как списки или очереди. В частности, мне нужно вставить элемент в голову и удалить элемент головки, а другие элементы перемещаться для размещения нового элемента.Как выполнить операции lua table с C?
Это было бы просто прямолинейно, я бы использовал table.insert
и table.remove
. Но в C?
Есть функции в API Lua C, такие как lua_settable, но не эквиваленты table.insert
и table.remove, которые всплыли. Похоже, что внутри интерпретатора есть внутренние функции C, но они не являются частью api.
Нужно ли мне звонить в функцию lua, которая делает это для меня?
спасибо. Но когда я попытался использовать мой код, он терпит неудачу, потому что возвращаемое значение lua_gettop не соответствует ожидаемому. В стек уже есть значения, поэтому lua_gettop возвращает что-то вроде 24, и функции ожидают, что это будет количество переданных аргументов, например 2 или 3. –
Вы нажимаете, например, позицию и значение в стеке раньше вы называете tinsert? –
Да, функция может быть вызвана из разных контекстов, где в стек уже много разных вещей. Поэтому я добавил дополнительную переменную в мою версию tinsert для смещения стека и сделал внутренности моего tinsert использовать это смещение. Теперь это работает. Благодарю. –