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

时间:2016-04-29 17:39:56

标签: lua

具体而言,除了:setupvalue返回名称之外,是否存在任何差异:

debug.setupvalue(f, up, val)

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

(使用val local)

或之间:

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

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

我的印象是upvaluejoin增添了一些魔力,但有些测试表明不然。

upvaluejoin只是一些糖来缓解功能重复等等吗?

1 个答案:

答案 0 :(得分:3)

debug.setupvalue(f, up, value)value设置为函数up的标识为f的upvalue

whereas debug.upvaluejoin(f1, n1, f2, n2)n1 - f1的最高值称为n2 - f2

的上升值

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

在某些情况下你可以获得相同的结果,但它们肯定不一样或只是可以互换。