Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 反向执行顺序_Scala - Fatal编程技术网

Scala 反向执行顺序

Scala 反向执行顺序,scala,Scala,在类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

在类
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
}
def反向:Repr={
var xs:List[A]=List()//第1行

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

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