有没有办法区分 Lua 闭包和 C 闭包?

有没有办法通过 Lua C API 找出函数值是 Lua 闭包还是 C 闭包?

我脑海中首先想到的是 lua_type 函数,但显然它只能告诉我们某个东西是否是函数。

我提出这个问题的原因是我目前正在开发一些非常邪恶的 hacky 代码,并希望能够在值是 C 闭包时至少给出一个优雅的错误。

LClosure *cl = (void *) lua_topointer(L, 1);
点赞