9

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

但是为什么不弃用旧方法呢?他们更快吗?是否存在toList有效但to[List]无效的情况?我们是否应该在两者都起作用的情况下更喜欢其中一个?

4

2 回答 2

7

toListTraversableOnceas中实现to[List],因此不会有任何明显的性能差异。

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

旧方法很容易被弃用,我敢打赌它们将来会被弃用,但是人们已经习惯了它们,以至于立即弃用它们可能会让一些人生气。

于 2013-03-04T18:27:27.070 回答
2

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

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)
于 2013-03-04T18:28:49.667 回答