是否存在与tostring()等效的Lua API函数,或者我是否必须在C代码中执行以下操作?
lua_getglobal(L, "tostring");
// ... push value to convert, and:
lua_call(L, 1, 1);
长篇故事:
我正在C中编写一个alert(message)
函数(可以从Lua调用),它会向用户显示一条消息。但是如果message
不是一个字符串(例如,布尔值或零),我想将它转换为理智的东西。有一个Lua函数可以做到这一点tostring()
,但我想知道Lua的C API是否提供了“直接”的方法来实现这一点。
答案 0 :(得分:3)
参考文献:
[ - 0,+ 1,e]
const char *luaL_tolstring (lua_State *L, int idx, size_t *len);
将给定索引处的任何Lua值转换为合理格式的C字符串。生成的字符串被压入堆栈并由函数返回。如果
len
不是NULL
,则该函数还会将*len
设置为字符串长度。如果值具有带有“
__tostring
”字段的元表,则luaL_tolstring
将使用值作为参数调用相应的元方法,并使用调用的结果作为结果。