我希望将一系列函数应用于一个对象(每个函数可以返回相同或修改的对象)并获得最后一个函数返回的最终结果.
是否有惯用的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.
谢谢
这应该这样做:
pipeline.foldLeft(initial_value){case (acc, (k,obj)) => obj.func(acc)}
Run Code Online (Sandbox Code Playgroud)
不知道为什么管道包含对.
| 归档时间: |
|
| 查看次数: |
1057 次 |
| 最近记录: |