当然,我可以通过在过滤器或地图功能之后提取列表来打破此代码并打印大小。但是为了学习,我想知道是否有一个更好的解决方案,我可以保持这个功能链接。
listOfSomething.filter(condition).map(e => e.mapToSomeOther).mkString(DELIMITER)
答案 0 :(得分:0)
对于具有副作用的不可变序列,没有任何方法,但是您可以使用副作用方法(我不建议这样做)来丰富API,如下所示:
scala> implicit class PrintSize[T](xs: List[T]){ def printSize = { println(xs.size); xs} }
defined class PrintSize
scala> List(1, 2, 3, 4, 5, 6, 7).filter(_ > 3).printSize.map(_ * 2).mkString(",")
4
res2: String = 8,10,12,14
关于提取临时结果的第一个建议要好得多,因为你可以在整个计算之后或之前做的副作用。