我惊讶地发现使用is和 notto[Col]的默认实现:SeqVectorList
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]的默认实现:SeqVectorList
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(?)来解决。意见?