странное поведение lua_getfield - PullRequest
0 голосов
/ 21 февраля 2011

Я заметил странное поведение с функцией 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

1 Ответ

1 голос
/ 08 марта 2011

Проблема решена. Возникла проблема с настройкой количества результатов, возвращаемых предыдущим вызовом lua_pcall. Что меня смущает, так это то, почему lua_next работал правильно, когда lua_getfield () неудачно завершился ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...