我惊讶地发现使用is和 notto[Col]
的默认实现:Seq
Vector
List
val x = Seq(1, 2, 3) // -> List(1, 2, 3)
x.toSeq // -> List(1, 2, 3)
x.to[Seq] // -> Vector(1, 2, 3)
怎么来的?
我惊讶地发现使用is和 notto[Col]
的默认实现:Seq
Vector
List
val x = Seq(1, 2, 3) // -> List(1, 2, 3)
x.toSeq // -> List(1, 2, 3)
x.to[Seq] // -> Vector(1, 2, 3)
怎么来的?
该to
方法定义在GenTraversableOnce[A]
:
def to[Col[_]](implicit cbf: CanBuildFrom[Nothing, A, Col[A]]): Col[A]
问题是GenTraversableOnce
没有Repr
类型。因此:
implicitly[CanBuildFrom[Nothing, Int, Seq[Int]]].apply.result // Vector()
然而
implicitly[CanBuildFrom[Seq[Int], Int, Seq[Int]]].apply.result // List()
实际上,我会将其视为错误。它只能通过将方法移动到GenTraversableLike
(?)来解决。意见?