scala.Array怎么样?

joh*_*ase 7 scala

我是一名强大的Java开发人员,他最近开始尝试在我的空闲时间内学习Scala.我正在通过scala-lang.org中的示例 PDF来阅读Scala,并且很困惑第一个示例中的快速排序是如何工作的.这是代码:

object QuickSort extends App {

  def sort(input: Array[Int]): Array[Int] = {
    if(input.length <= 1) input
    else
    {
      val pivot = input(input.length / 2)
      Array.concat(
          sort(input filter (pivot >)),
               input filter (pivot ==),
          sort(input filter (pivot <))
      )
    }
  }

  sort(Array(5, 4, 3, 2, 1)) foreach println
}
Run Code Online (Sandbox Code Playgroud)

我的问题不是语法或任何东西,但我对过滤函数的来源感到困惑.根据PDF,它说它来自Seq [T]类,并且所有数组都是Seq [T]的实例.这一切都很好,花花公子,在阅读PDF时,我很满意,也是一位非常开心的新手Scala开发人员.但后来我深入挖掘并开始查看Array [T]scaladoc以及Array [T]的源代码,我不知道Array [T]类是如何扩展或继承Seq [T]特征的所有.我错过了什么?

Dan*_*ral 10

你错过了暗示.有一个 问题,关于implicits堆栈溢出.在您正在阅读的PDF上,请参阅第15页,从第113页开始.在Scaladoc上,您将看到对象上的相关含义scala.Predef- 只需查找带有Array输入参数并返回其他内容的隐式方法.

PS:Yikes,它说Array是一个Seq!实际上,在Scala 2.8之前可能就是这种情况,但从那时起,它Array就是一个Array纯粹而简单的Java .