Lua возвращает «string» в C ++ вместо «double», используя lua_type (lua_state, lua_gettop (lua_state), в чем может быть проблема? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь вызвать функцию из lua несколько раз, которая возвращает значение в C ++. Я получаю тип double большую часть времени, но иногда он отправляет то же значение double, что и string. Например => 30,5 как «30,5».

Почему lua интерпретирует это неправильно?

Я пытался вернуть значение из lua, используя tonumber(return_value), чтобы принудительно ввести его в число, но иногда это все равно дает string.

для lua сторона:

function getValue()

mValue = 30+ 0.5  
return mValue

end

function init()

    print(" [lua]  Calling getValue")
    ret1 = getValue()
    return ret1  -- tried tonumber(ret1) also

end

для стороны C ++:

while (lua_gettop(lua_state) >= 1)

{

                str_buf.str(std::string());
        str_buf << " ";
    switch (lua_type(lua_state, lua_gettop(lua_state)))
    {
    case LUA_TNUMBER:
        {
            str_buf << "script returned the number: "
                << lua_tonumber(lua_state, lua_gettop(lua_state));
        }
        break;
    case LUA_TTABLE:
       str_buf << "script returned a table";
    break;
    case LUA_TSTRING:
        {
            std::string temp = lua_tostring(lua_state, lua_gettop(lua_state));
            str_buf << "script returned the string: "
                << temp;
        }
        break;
    case LUA_TBOOLEAN:
        {   
            str_buf << "script returned the boolean: "
            << lua_toboolean(lua_state, lua_gettop(lua_state));
        }
        break;
        default:
    str_buf << "script returned an unknown-type value";     
}

Я всегда рассчитываю получить 30,5 в C ++, и case LUA_TNUMBER: должен выполняться каждый раз, но иногда дело доходит до LUA_TSTRING:.

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