【求助】如何完美地重载一个函数?
lua吧
全部回复
仅看楼主
level 13
“完美”是指,不管原来的函数有多少个返回值,都能够原模原样地保留并在重载的函数里返回。
如果返回值在新的重载函数中不会被使用到的话,那么很简单,像这样就行了:
function FuncOne(x)
return x + 1, x - 1
end
local l_fnOneOld = FuncOne
FuncOne = function(x)
print("这是新版本的FuncOne")
return l_fnOneOld(x)
end
但是如果重载函数中需要用到原来的函数的返回值的话,那么就会发生截断,就不知道怎么办了,除非对原来的函数的返回值个数做出规定。有没有能够普遍适用的方法呢?
2018年05月10日 02点05分 1
level 8
不清楚你的意思,不过感觉解决你的问题不难,可以再说清楚点吗?
2018年05月10日 06点05分 2
level 8
看明白了,你需要的是table.unpack这个函数。
2018年05月10日 06点05分 3
是的,后来我也想到了,先table.pack,最后再table.unpack
2018年05月10日 10点05分
1