【发布时间】:2017-02-17 15:24:01
【问题描述】:
看下面的代码:
val a = List(1,2,3,4,5)
a.filter(_ >= 3).map(_ * 9).drop(1).take(2)
我的理解是每次操作都会遍历列表一次,生成类似这样的代码:
for(i <- a) {
// filter
}
for (i <- afiltered) {
// map
}
for (i <- afilteredandmapped) {
// drop
}
..etc
是否有组合这些操作的链接操作只在列表中迭代一次?生成如下:
for (i <- a) {
// filter
// map
// drop
// take
}
【问题讨论】:
-
使用
Stream而不是List。 -
这是
view应该做的,但它也有一些其他微妙的影响:a.view.filter(_>=3).map(_*9).drop(1).take(2).toList
标签: scala collections functional-programming scala-collections