我正在使用带有-Yno-predef
标志的自定义Predef
。它基本上是SlamData的副本。
当我尝试展平嵌套的不可变Seq
集合时,我收到错误:
No implicit view available from my.Predef.Seq[String] => scala.collection.GenTraversableOnce[String].
如果我放import scala.Predef._
它会再次编译。我试图调查scala.Predef
和scala
包对象,但是当我试图复制TraversableOnce
的,Traversable
的或Seq
的定义时,它没有帮助。
有人知道 vanilla predef 的哪个部分负责生成这个隐式吗?
您正在寻找Predef.$conforms
.
弄清楚的一种方法是在命令行上运行scala -Xprint:typer -e 'Seq(Seq(1)).flatten'
。 它将打印整个语法树,并解析所有隐式语法。
经过一番挖掘,我发现我缺少的是:
type <:<[-From, +To] = scala.Predef.<:<[From, To]
implicit def $conforms[A]: A <:< A = scala.Predef.$conforms[A]
显然,在伴随对象内的所有这些类型类派生中使用的隐式证据是必需的。