使用-Yno-predef标志展平scala.immutable.Seq

时间:2017-07-03 15:20:10

标签: scala implicit predef

我正在使用带有Predef标志的自定义-Yno-predef。它基本上是SlamData's one的副本。

当我尝试压缩嵌套的不可变Seq集合时,我收到错误:

No implicit view available from my.Predef.Seq[String] => scala.collection.GenTraversableOnce[String].

如果我放import scala.Predef._它会再次编译。我尝试调查scala.Predefscala包对象,但是当我尝试复制TraversableOnceTraversableSeq时这个定义并没有帮助。

有人知道vanilla predef的哪一部分负责生成这个隐含的东西吗?

2 个答案:

答案 0 :(得分:4)

您正在寻找Predef.$conforms

解决问题的方法是在命令行上运行scala -Xprint:typer -e 'Seq(Seq(1)).flatten'。 它将打印整个语法树,解决所有含义。

答案 1 :(得分:0)

经过一番挖掘后,我发现我所缺少的是:

type <:<[-From, +To] = scala.Predef.<:<[From, To]
implicit def $conforms[A]: A <:< A = scala.Predef.$conforms[A] 

显然,在伴随对象内的所有类型类派生中使用隐式证据是必需的。