我想知道数组中的 .toList 与 .to[List] 之间有什么区别。我在spark-shell中做了这个测试,结果没有区别,但我不知道用什么更好。任何意见?
scala> val l = Array(1, 2, 3).toList
l: List[Int] = List(1, 2, 3)
scala> val l = Array(1, 2, 3).to[List]
l: List[Int] = List(1, 2, 3)
最佳答案
添加到 Luis 的评论中,to[List]
(如 Luis 所述)实际上使用工厂参数来构建列表。但是,链接源仅在集合大修后的 Scala 2.13+ 有效。您使用的语法在 Scala 2.13 中不起作用,您必须编写 .to(List)
,显式传递工厂参数。在以前的 Scala 版本中,该方法看起来像 this . CanBuildFrom 本质上是作为隐式参数传递的工厂。
此方法存在的原因是它在标准库中的集合之外是通用的(并且您不必将每个可能的转换定义为单独的方法)。您可以使用另一个集合库(例如 Breeze ),构建一个工厂或使用一个包含的工厂,然后使用 to(factory)
方法。您还可以在将工厂作为参数并将其传递给转换方法的通用函数中使用它,例如:
def mapAndConvert[A, B, C](list: List[A], f: A => B, factory: Factory[B, C]): C[B] =
list.map(f).to(factory)
在这个例子中,我不需要知道 C
是什么集合,但我仍然可以轻松返回一个集合。
关于arrays - Scala:array.toList 与 array.to[List],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511776/