Lua的tostring()在C中的实现?

Lua API 有没有和 toString() 等价的函数?如果没有,我需要在我的 C 代码中执行以下操作吗?

lua_getglobal(L, "tostring");
// ... push value to convert, and:
lua_call(L, 1, 1);

长话短说:

我正在使用 C 编写一个 alert(message) 函数,可从 Lua 调用,用于向用户显示消息。但如果 message 不是字符串(例如,布尔值或 nil),我希望将其转换为有意义的内容。Lua 有一个函数可以做到这一点,即 tostring(),但我想知道 Lua 的 C API 是否提供了“直接”执行此操作的方法。

点赞
用户1601606
用户1601606

使用luaL_tolstring

从参考文献中:

[-0,+1,e]

const char *luaL_tolstring(lua_State *L,int idx,size_t *len);

将给定索引处的任何Lua值转换为合理的格式的C字符串。生成的字符串被推到堆栈上,并且也被该函数返回。如果len不为NULL,则该函数还将该字符串长度设置为*len

如果值具有带有“__tostring”字段的元表,则luaL_tolstring使用该值作为参数调用相应的元方法,并使用调用的结果作为其结果。

2014-03-23 15:58:41