我有收到一些数据本身,参考其他功能和参数在任意函数的挂钩后功能...
。 这个函数引用函数返回后一些后期处理。 为简单起见,让我们只注意时间:
function passthrough(tag, func, ...)
metric1[tag] = os.time()
func(...)
metric2[tag] = os.time()
end
因为我需要进行后处理,我不能立即return func(...)
我事先不知道有多少的回报会有。 我怎样才能直通那些回报我与后期处理完成后?
到目前为止,我能想到的只有在包装调用local results = { func(...) }
,然后使用return unpack(results)
或进行后处理工厂,会生成具有所有必要的数据upvalues后处理关闭:
local function generate_postprocessor(tag)
return function(...)
metric2[tag] = os.time()
return ...
end
end
function passthrough2(tag, func, ...)
metric1[tag] = os.time()
return generate_postprocessor(tag)(func(...))
end
然而,这两个方案将引入一些开销,这是不可取的,考虑到迭代和应用程序的实时性的高量。 有什么简单?