Я пытаюсь вызвать функцию из 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:
.