scala - Scala 将函数序列作为参数类型传递
问题描述
为了流水线化各种数据转换函数,我想遍历一系列函数并将每个函数应用于初始输入。对于单个输入,它将是这样的:
def transformPipeline(f: MyType => MyType)(val: MyType): MyType = {...}
我怎样才能定义这个函数,而不是接受一个f: MyType => MyType
它会接受类似的东西Seq(f: MyType => MyType)
例如
def transformPipeline(f: Seq[MyType => MyType])(val: MyType): MyType = {...}
解决方案
如果我正确理解您的问题,那么这可能就是您所追求的。
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
推荐阅读
- javascript - 正则表达式仅包含二进制数且不超过 8 位
- jenkins-pipeline - 使用 JUnitFlakyTestDataPublisher 会引发 AbstractMethodError “您必须覆盖contributeTestData”
- session - 如何使用 SAP Connection 保持同一登录状态?
- java - 如何修复“ic_launcher_foreground.xml:1:错误:未找到元素。” 在 Android Studio 中
- cordova - 在 Ionic 3 移动应用程序中使用linkedin 登录
- php - Ajax Div 刷新太快
- c# - Dispose(true) 从未调用 Xamarin.Android 'Java.Object'
- python - 将数据框转换为 JSON
- php - 如何设置权限以缓存和记录 symfony docker 容器
- android - RxJava 单元测试 - Observable 在测试中不发射事件