【发布时间】:2015-08-30 09:58:47
【问题描述】:
我是 Scala 的新手,并试图找出过滤和映射集合的最佳方法。这是一个解释我的问题的玩具示例。
方法 1: 这很糟糕,因为我在列表中迭代了两次,并且每次迭代都计算相同的值。
val N = 5
val nums = 0 until 10
val sqNumsLargerThanN = nums filter { x: Int => (x * x) > N } map { x: Int => (x * x).toString }
方法 2: 这稍微好一些,但我仍然需要计算 (x * x) 两次。
val N = 5
val nums = 0 until 10
val sqNumsLargerThanN = nums collect { case x: Int if (x * x) > N => (x * x).toString }
那么,是否可以在不遍历集合两次的情况下进行计算并避免重复相同的计算?
【问题讨论】:
标签: scala dictionary collections filter collect