gpt4 book ai didi

scala - scala.Array 如何是 Seq?

转载 作者:行者123 更新时间:2023-12-04 10:30:00 26 4
gpt4 key购买 nike

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

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
}

我的问题不在于语法或任何东西,但我对过滤器函数的来源感到困惑。根据 PDF,它说它来自 Seq[T] 类,并且所有数组都是 Seq[T] 的实例。这一切都很好,而且在阅读 PDF 时我很满意,并且是一个非常快乐的 Scala 新手开发人员。但后来我挖得更深一些,开始查看 scaladoc for Array[T]以及 Array[T] 的源代码,我根本看不到 Array[T] 类是如何扩展或继承 Seq[T] 特性的。我错过了什么?

最佳答案

你缺少隐式。有一个 few questions关于 implicits在堆栈溢出上。在您正在阅读的 PDF 上,请参阅第 15 章,从第 113 页开始。在 Scaladoc 上,您将看到对象 scala.Predef 上的相关隐式。 -- 只需寻找带有 Array 的隐式方法作为输入参数并返回其他内容。

PS:哎呀,上面写着ArraySeq !实际上,在 Scala 2.8 之前可能就是这种情况,但从那时起 Array是 Java Array ,简单明了。

关于scala - scala.Array 如何是 Seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com