33 lines
1.0 KiB
Go
33 lines
1.0 KiB
Go
package report
|
|
|
|
import "github.com/kercylan98/minotaur/utils/generic"
|
|
|
|
// HitLogic 埋点命中逻辑
|
|
// - data: 当前数据
|
|
// - input: 新输入的数据
|
|
// - return: 设置当前数据
|
|
type HitLogic[Data any] func(data Data, input Data) Data
|
|
|
|
// WithHitLogicCustomize 通过自定义命中处理逻辑处理命中事件
|
|
// - 通过对旧数据和新数据的处理,将返回的值作为新的数据值
|
|
func WithHitLogicCustomize[Data any](logic func(data Data, input Data) Data) HitLogic[Data] {
|
|
return func(data Data, input Data) Data {
|
|
return logic(data, input)
|
|
}
|
|
}
|
|
|
|
// WithHitLogicCover 通过覆盖原数值的方式处理命中事件
|
|
func WithHitLogicCover[Data any]() HitLogic[Data] {
|
|
return func(data Data, input Data) Data {
|
|
return input
|
|
}
|
|
}
|
|
|
|
// WithHitLogicOverlay 通过数值叠加的方式处理命中事件
|
|
// - 例如原始值为100,新输入为200,最终结果为300
|
|
func WithHitLogicOverlay[Data generic.Number]() HitLogic[Data] {
|
|
return func(data Data, input Data) Data {
|
|
return data + input
|
|
}
|
|
}
|