为什么标准集合类型中没有toVector方法(如toList,toArray)?

时间:2012-03-23 04:34:39

标签: scala

如果我们应该使用 Vector 作为默认的Sequence类型,为什么标准集合类型中没有toVector方法(如toList,toArray)?

在原型设计阶段,是否可以将所有集合符合Seq类型并在所有集合返回上使用toSeq(将所有内容转换为Seq)?

3 个答案:

答案 0 :(得分:14)

通常你应该更关心集合实现的接口而不是它的具体类型,即你应该考虑SeqLinearSeqIndexedSeq而不是{ {1}},ListArray,这些都是具体实现。所以可以说不应该有VectortoList,但我猜它们就在那里,因为它们是如此基础。

实践中的toArray方法为您提供了toIndexedSeq,除非集合覆盖此方法以提供更有效的实现。您也可以使用Vector创建一个向量,其中Vector() ++ c是您的收藏。

答案 1 :(得分:3)

Scala 2.10将附带方法.to[C[_]],以便您可以撰写.to[List].to[Array].to[Vector]或任何其他兼容的C

答案 2 :(得分:1)

Scala 2.10不仅添加.to [Vector],还添加.toVector:

在集合和迭代器继承的TraversableOnce特性中:

abstract def toVector: Vector[A]