Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为什么不';托利斯特和朋友不赞成?_Scala - Fatal编程技术网

Scala 为什么不';托利斯特和朋友不赞成?

Scala 为什么不';托利斯特和朋友不赞成?,scala,Scala,在Scala序列2.10版之前,序列类型具有从一种类型转换为另一种类型的方法,如toList和toArray。从Scala 2.10开始,我们有到[\u],例如到[List],它似乎包含了toList和friends,也让我们能够转换为新类型,如Vector,甚至可能转换为我们自己的收藏类型。当然,它能让你转换成一种你只知道作为类型参数的类型,例如,到[a]——很好 但是为什么旧方法没有被弃用呢?他们快吗?是否存在toList有效,而to[List]无效的情况?如果两者都起作用,我们是否应该选择

在Scala序列2.10版之前,序列类型具有从一种类型转换为另一种类型的方法,如
toList
toArray
。从Scala 2.10开始,我们有
到[\u]
,例如
到[List]
,它似乎包含了
toList
和friends,也让我们能够转换为新类型,如
Vector
,甚至可能转换为我们自己的收藏类型。当然,它能让你转换成一种你只知道作为类型参数的类型,例如,
到[a]
——很好


但是为什么旧方法没有被弃用呢?他们快吗?是否存在
toList
有效,而
to[List]
无效的情况?如果两者都起作用,我们是否应该选择其中一个呢?

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

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


旧方法很容易被弃用,我敢打赌将来也会被弃用,但人们对它们已经习以为常,因此立即弃用它们可能会让一些人生气。

问题似乎在于,在后缀符号中,您无法使用[]:

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)
scala>Array(1,2)toList
res2:List[Int]=List(1,2)
scala>数组(1,2)到[列表]
:1:错误:';'应为“”,但找到“[”。
数组(1,2)到[列表]
scala>数组(1,2).to[列表]
res3:List[Int]=List(1,2)

toXXX
很容易被覆盖,就像这样,不仅仅是
toArray
。事实上,它比覆盖更容易,特别是
。嗯,塞缪尔,你看起来太年轻了——你妈妈知道你在看Scala collections的源代码吗?@AmigoNico Shhh,别告诉她,否则她可能会停止你的工作告诉我!
xs-toList
会产生警告,不要隐藏该警告。@sschaef:如果导入scala.language.postfixOps