gpt4 book ai didi

scala - 反向实现序列

转载 作者:行者123 更新时间:2023-12-01 10:54:36 25 4
gpt4 key购买 nike

SeqLike.scala 类中,有一个名为 reverse 的函数可以反转序列。例如,它使 List(1,2,3,4) 变为 `List(4,3,2,1)

在源码中,描述是:

def reverse: Repr = {
var xs: List[A] = List() //Line 1
for (x <- this)
xs = x :: xs
val b = newBuilder ////Line 4
b.sizeHint(this)
for (x <- xs)
b += x
b.result
}

我不明白的是:第 (1-3) 行完成了这项工作。但是为什么它会新建一个builder,然后往里面添加元素返回。只需行 [1-3] 就足够了

最佳答案

第 1-3 行生成一个 List。但是 reverse 不应该返回任何旧的 Seq 而是返回相同类型的 Seq 。因此,如果它实际上是一个列表,则不需要额外的构建步骤;否则它会。 (如果您查看 List 的实现,它不会做额外的工作。)

override def reverse: List[A] = {
var result: List[A] = Nil
var these = this
while (!these.isEmpty) {
result = these.head :: result
these = these.tail
}
result
}

关于scala - 反向实现序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003026/

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