关于 setupvalue 和 upvaluejoin 是否可以互换 (lua 调试库)?

具体来说, 除了 setupvalue 返回名称之外, 下面两种方法是否有任何区别:

debug.setupvalue(f, up, val)

debug.upvaluejoin(f, up, function() return val end, 1)

(其中 val 是局部变量)

或者下面两种方法是否有任何区别:

debug.upvaluejoin(f1, n1, f2, n2)

debug.setupvalue(f1, n1, select(2, debug.getupvalue(f2, n2)))

我的印象是, upvaluejoin 添加了一些奇怪的东西, 但是一些测试结果表明并非如此.

upvaluejoin 是为了简化函数复制等操作吗?

点赞
用户2858170
用户2858170

debug.setupvalue(f, up, value)value 设为函数 f 的 id 为 up 的 upvalue

debug.upvaluejoin(f1, n1, f2, n2)f1 的第 n1 个 upvalue 引用到 f2 的第 n2 个 upvalue。

所以它们实际上是完全不同的东西,而不是一些简单的糖果。

在某些情况下,您可以实现相同的结果,但它们绝对不是相同的或简单可互换的。

2016-04-29 19:33:09