【发布时间】:2018-03-10 06:54:44
【问题描述】:
我刚刚发现 scala(我在 2.12 上)为 不可变列表 和 可变列表 提供了完全不同的 foldRight 实现>.
不可变列表(List.scala):
override def foldRight[B](z: B)(op: (A, B) => B): B =
reverse.foldLeft(z)((right, left) => op(left, right))
可变列表(LinearSeqOptimized.scala):
def foldRight[B](z: B)(@deprecatedName('f) op: (A, B) => B): B =
if (this.isEmpty) z
else op(head, tail.foldRight(z)(op))
现在我只是好奇。 你能解释一下为什么它的实现方式如此不同吗?
【问题讨论】:
标签: scala