能否为创建时未包含 upvalue 的闭包添加一个 upvalue 呢?

我一直在尝试更改 Lua 闭包的地址,然后使用一个需要将函数的 upvalue 传递给它的包装函数。唯一的问题是当我更改函数的地址并尝试移动 upvalue 时,它会失败,因为闭包没有为任何 upvalue 分配空间。所以问题是,是否有一种方法为已经创建的闭包分配 upvalue 的空间? 在编码中,会像这样:

lua_pushnil(L);//例如
lua_pushcclosure(L, Function, 0);
lua_addupvalue(L, -1, 1);
lua_pushvalue(L, -2);
lua_setupvalue(L, -2, 1);

这就是我想要的方法,我希望参数是自说明的。如果有人有任何想法,请告诉我。我已经思考了一段时间了。

点赞