具体而言,除了: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只是一些糖来缓解功能重复等等吗?
答案 0 :(得分:3)
debug.setupvalue(f, up, value)
将value
设置为函数up
的标识为f
的upvalue
whereas debug.upvaluejoin(f1, n1, f2, n2)
将n1
- f1
的最高值称为n2
- f2
所以实际上它们是完全不同的东西,而不仅仅是一些糖。
在某些情况下你可以获得相同的结果,但它们肯定不一样或只是可以互换。