如果我们应该使用 Vector 作为默认的Sequence类型,为什么标准集合类型中没有toVector方法(如toList,toArray)?
在原型设计阶段,是否可以将所有集合符合Seq类型并在所有集合返回上使用toSeq(将所有内容转换为Seq)?
答案 0 :(得分:14)
通常你应该更关心集合实现的接口而不是它的具体类型,即你应该考虑Seq
,LinearSeq
和IndexedSeq
而不是{ {1}},List
和Array
,这些都是具体实现。所以可以说不应该有Vector
和toList
,但我猜它们就在那里,因为它们是如此基础。
实践中的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]