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