我听说 foldLeft 在大多数操作中效率更高,但 Scala School(来自 Twitter)给出了以下示例。有人可以分析它的效率吗?我们是否应该使用 foldLeft 实现相同的操作?
val numbers = List(1,2,3,4,5,...10)
def ourMap(numbers: List[Int], fn: Int => Int): List[Int] = {
numbers.foldRight(List[Int]()) { (x: Int, xs: List[Int]) =>
fn(x) :: xs
}
}
scala> ourMap(numbers, timesTwo(_))
res0: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)