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)

怎么来的?

4

1 回答 1

2

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(?)来解决。意见?

于 2013-10-23T08:40:14.517 回答