Scala列出了“ var”用法

问题描述 投票:2回答:1

我对Scala还是比较陌生。我正在研究Scala的List实现,在那里我看到很多功能部件仍在实现中使用“ var”。我一直在阅读scala如何更注重功能,因此,如果可能的话,库不使用尾部递归,而不要使用“ var”。

例如,存在可以改写为:

@tailrec
def exists[A](f : A => Boolean) : Boolean = this match {
    case Nil => false
    case l:LinearSeq[A]=> if (f(l.head)) true else exists(l.tail,f)
}

我问的原因是,我在不鼓励使用“ var”的地方阅读了很多材料,但是我看到很多实现在List实现中使用。

谢谢!

scala tail-recursion
1个回答
1
投票

[当您有List之类的东西时,几乎在每个Scala程序中都经常使用它:

  1. 即使很小的加速(或减速)也会产生很大的累积影响;

  2. 它的贡献者往往是对Scala低级细节了解很多的人(如果不了解,他们的补丁将被那些知道的人查看)。

因此,仅向学习Scala的人提供的建议不是特别适用。

对于此特定示例:@tailrec在Scala 2.8之前不存在,该代码可能是更早编写的(我没有检查过,并且没有充分的理由重写它。

© www.soinside.com 2019 - 2024. All rights reserved.