为什么不toList和朋友弃用?

时间:2013-03-04 18:07:22

标签: scala

在版本2.10之前,Scala序列类型使用toListtoArray等方法从一种类型转换为另一种类型。从Scala 2.10开始,我们有to[_],例如to[List],它似乎包含toList和朋友,也让我们能够转换为Vector等新类型,甚至可能转换为我们自己的集合类型。当然,它使您能够转换为仅作为类型参数知道的类型,例如to[A] - 很好!

但为什么旧的方法不被弃用?它们更快吗?是否存在toList有效但to[List]无效的情况?我们是否应该优先选择其中一个工作?

2 个答案:

答案 0 :(得分:7)

toList已在TraversableOnce to[List]中实施,因此不存在任何明显的性能差异。

然而,toArray(非常轻微)比to[Array]更有效,因为前者分配了正确大小的数组,而后者首先创建了一个数组,然后设置了大小提示(就像它一样)对于每个目标集合类型)。除非您在紧密循环中将数据转换为数组,否则这不应对实际应用程序产生影响。

旧的方法可能很容易被弃用,我敢打赌他们将来会这样做,但人们已经习惯了他们,立刻弃用它们可能会让一些人生气。

答案 1 :(得分:2)

问题似乎是你不能在后缀表示法中使用[]:

scala> Array(1,2) toList
res2: List[Int] = List(1, 2)

scala> Array(1,2) to[List]
<console>:1: error: ';' expected but '[' found.
       Array(1,2) to[List]

scala> Array(1,2).to[List]
res3: List[Int] = List(1, 2)