将一系列函数应用于值并获得最终结果

mad*_*mer 3 scala

我希望将一系列函数应用于一个对象(每个函数可以返回相同或修改的对象)并获得最后一个函数返回的最终结果.

是否有惯用的Scala方法来转换它(伪代码):

val pipeline = ListMap(("a" -> obj1), ("b" -> obj2), ("c" -> obj3))
Run Code Online (Sandbox Code Playgroud)

进入这个?

val initial_value = Something("foo", "bar")
val result = obj3.func(obj2.func(obj1.func(initial_value)))
Run Code Online (Sandbox Code Playgroud)

pipeline在运行时初始化,包含未确定数量的"manglers".

我试过foreach但它需要一个中间var来存储结果,并且foldLeft只适用于类型ListMap,而初始值和结果是类型Something.

谢谢

The*_*aul 5

这应该这样做:

 pipeline.foldLeft(initial_value){case (acc, (k,obj)) => obj.func(acc)}
Run Code Online (Sandbox Code Playgroud)

不知道为什么管道包含对.