斯卡拉foldLeft实现:List实现foldLeft的
def foldLeft[B](z: B)(op: (B, A) => B): B = {
var result = z
this foreach (x => result = op(result, x))
result
}
为什么斯卡拉develovers不使用类似的尾递归或别的东西,像这样的(这只是例子):
def foldLeft[T](start: T, myList: List[T])(f:(T, T) => T): T = {
def foldRec(accum: T, list: List[T]): T = {
list match {
case Nil => accum
case head :: tail => foldRec(f(accum, head), tail)
}
}
foldRec(start, myList)
}
是真的吗?为什么如果它不能/可以?
我不确定所有这些“为什么用这种方式写这个Scala库?”即使所讨论的图书馆是标准图书馆,问题也是非常有用的。他们可能更适合Scala邮件列表,或者Scala/scala Gitter聊天室。 –