我是 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 }
那么,是否可以在不迭代集合两次并避免重复相同计算的情况下计算它?