为了流水线化各种数据转换功能,我想遍历一系列功能并将每个功能应用于初始输入。对于单个输入,将是这样的:
def transformPipeline(f: MyType => MyType)(val: MyType): MyType = {...}
如何定义此函数,以使其不接受单个f: MyType => MyType
而是接受类似Seq(f: MyType => MyType)
例如
def transformPipeline(f: Seq[MyType => MyType])(val: MyType): MyType = {...}
答案 0 :(得分:2)
如果我正确理解了您的问题,那可能就是您想要的。
def transformPipeline(fs: Seq[MyType => MyType])(init: MyType): MyType =
fs.foldLeft(init)((v, f) => f(v))
经过如下测试:
type MyType = Int
transformPipeline(Seq(_+1,_*2,_/3))(17) //res0: MyType = 12