作为参数类型的Scala函数传递序列

时间:2018-10-15 22:23:59

标签: scala functional-programming pipeline

为了流水线化各种数据转换功能,我想遍历一系列功能并将每个功能应用于初始输入。对于单个输入,将是这样的:

def transformPipeline(f: MyType => MyType)(val: MyType): MyType = {...}

如何定义此函数,以使其不接受单个f: MyType => MyType而是接受类似Seq(f: MyType => MyType)

的内容

例如

def transformPipeline(f: Seq[MyType => MyType])(val: MyType): MyType = {...}

1 个答案:

答案 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