Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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 2.9.2中,Seq.apply去了哪里?_Scala - Fatal编程技术网

在Scala 2.9.2中,Seq.apply去了哪里?

在Scala 2.9.2中,Seq.apply去了哪里?,scala,Scala,Scala 2.8.2有一个Seq.apply方法,因此您可以在REPL中编写以下内容: val l = Seq(1, 2) l: Seq[In] = List(1, 2) 这在Scala 2.9.2中仍然有效,但让我困惑的是,根据文档,已经没有Scala.collection.Seq.apply方法了 我使用scala-Xprint:typer进行了检查,它打印的内容如下: [[syntax trees at end of typer]]// Scala source: <consol

Scala 2.8.2有一个Seq.apply方法,因此您可以在REPL中编写以下内容:

val l = Seq(1, 2)
l: Seq[In] = List(1, 2)
这在Scala 2.9.2中仍然有效,但让我困惑的是,根据文档,已经没有Scala.collection.Seq.apply方法了

我使用scala-Xprint:typer进行了检查,它打印的内容如下:

[[syntax trees at end of typer]]// Scala source: <console>
package $line14 {
  final object $read extends java.lang.Object with ScalaObject {
    def this(): object $line14.$read = {
      $read.super.this();
      ()
    };
    final object $iw extends java.lang.Object with ScalaObject {
      def this(): object $line14.$read.$iw = {
        $iw.super.this();
        ()
      };
      final object $iw extends java.lang.Object with ScalaObject {
        def this(): object $line14.$read.$iw.$iw = {
          $iw.super.this();
          ()
        };
        private[this] val l: Seq[Int] = collection.this.Seq.apply[Int](1, 2);
        <stable> <accessor> def l: Seq[Int] = $iw.this.l
      }
    }
  }
}

[[syntax trees at end of typer]]// Scala source: <console>
package $line14 {
  final object $eval extends java.lang.Object with ScalaObject {
    def this(): object $line14.$eval = {
      $eval.super.this();
      ()
    };
    lazy private[this] var $result: Seq[Int] = {
      $eval.this.$print;
      $line14.$read.$iw.$iw.l
    };
    private[this] val $print: String = {
      $read.$iw.$iw;
      "l: Seq[Int] = ".+(scala.runtime.ScalaRunTime.replStringOf($line14.$read.$iw.$iw.l, 1000))
    };
    <stable> <accessor> def $print: String = $eval.this.$print
  }
}

l: Seq[Int] = List(1, 2)

这表明它仍然调用Seq.apply,但是这个方法在哪里呢?

它实际上是Scaladoc 2.9.2中的一个bug

我检查了scala-library.jar,发现伴随对象scala.collection.Seq间接扩展了scala.collection.generic.GenericCompanion[Seq],它有效地提供了方法签名:

def apply[A](elems: A*): Seq[A]
这反过来调用newBuilder,它在Seq中被覆盖以返回:

scala.collection.immutable.Seq.newBuilder[A]

它实际上是ScalaDoc2.9.2中的一个bug

我检查了scala-library.jar,发现伴随对象scala.collection.Seq间接扩展了scala.collection.generic.GenericCompanion[Seq],它有效地提供了方法签名:

def apply[A](elems: A*): Seq[A]
这反过来调用newBuilder,它在Seq中被覆盖以返回:

scala.collection.immutable.Seq.newBuilder[A]

这是ScalaDoc中的一个bug,在2.10中得到了解决。@sschaef:+1,这应该是一个完整的答案我再也找不到这个问题->还不够回答一个有趣的时刻:我相信我发现了这个问题:这是ScalaDoc中的一个bug,在2.10中得到了解决。@sschaef:+1,这应该是一个完整的答案我再也找不到问题->不足以回答一个有趣的时刻:我相信我找到了问题: