【发布时间】:2013-12-01 06:00:44
【问题描述】:
我想写一个转换链,最后有一个块,我在不使用变量的情况下对结果集合做一些事情。 集合上是否有一个高阶函数只提供调用它的集合给所提供的函数?
Query( ... )
.map { ... }
.filter { ... }
.combinations(2)
.pipeTo { col =>
...
consolidate(col)
}
当然,对于单个函数调用,可以这样做:
consolidate(
Query()
.map { ... }
.filter { ... }
.combinations(2)
)
但前者对我来说更自然,并且允许例如用于轻松注入一些条件。
我一直在使用的解决方法是在末尾放置一个匹配子句:
Query()
.map { ... }
.filter { ... }
.combinations(2)
match { case lst =>
...
consolidate(lst)
}
但由于这种模式经常出现,我想知道写这个的惯用方式是什么。
【问题讨论】:
-
这可能有点傻,但你能不能只在你的整个链条上调用合并? consolidate(Query().map(...).filter(...).combinations(2)) 看起来和你上一个例子做的一样
-
我在第二个示例中介绍了该选项,但它不等同于 match 示例,因为后者除了调用“合并”函数之外还允许进行其他处理。
标签: scala higher-order-functions