Я заметил странное поведение с функцией lua_getfield ().Пожалуйста, посмотрите на этот фрагмент кода, который должен просто получить поле из таблицы, расположенной в верхней части стека:
if(lua_istable(L,-1)){
lua_getfield(L,-1,"field_name");
int type = lua_type(L,-1); // returns LUA_TNIL
int field_value = lua_tointeger(L,-1); // returns 0
lua_pop(L,1);
// and now let's try iterating all table's fields:
lua_pushnil(L); // first key
while(lua_next(L, -2) != 0){
// uses 'key' (at index -2) and 'value' (at index -1)
CString key = lua_tostring(L,-2);
int type = lua_type(L,-1);
if(key == "field_name"){ //
int value = lua_tointeger(L,-1); // returns correct value!!!! (type == LUA_TNUMBER)
// ????? what the heck ????
}
// removes 'value'; keeps 'key' for next iteration
lua_pop(L, 1);
}
Вопрос в том, почему lua_getfield () не работает, а lua_next () работает отлично?Я использовал lua_getfield () десятки раз без проблем, и теперь я врезаюсь головой в клавиатуру ...
reagards Marcin