我对 Scala 还是比较陌生。我正在浏览 Scala 的 List 实现,在那里我看到很多函数在实现中仍然使用“var”。我一直在阅读 scala 如何更加面向功能,因此,如果库尽可能不使用尾递归,则不要使用“var”。
例如,exsits 可以重写为:
@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”的 Material ,但我看到在 List 实现中使用了很多。
谢谢!
最佳答案
当你有类似 List
的东西时,几乎在每个 Scala 程序中都经常使用:
因此,给刚学习 Scala 的人的建议并不是特别适用。
对于此特定示例:
@tailrec
直到 Scala 2.8 才存在,这段代码可能是更早写的(我没有检查过)并且没有足够的理由重写它。
关于Scala 列出了 "var"的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650205/