arrays - Scala:array.toList 与 array.to[List]

标签 arrays scala

我想知道数组中的 .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/

相关文章:

arrays - 快速比较两个长度不同的数组

scala - 如何使用 Dispatch 解析 JSON 请求?

scala - 我可以覆盖 Scala 中匿名函数的 toString 方法吗?

scala - 展平 Future[Option[Option[T]]] 的 Option 部分

javascript - 如何更改字符串的输出?

java - java中使用分隔符填充数组

scala - Intellij Idea scala 插件使用什么 scala 版本?

scala - 使用Apache Spark流向ElasticSearch实时发送Kafka消息

arrays - ruby - 在 ruby​​ 中将多个哈希插入数组

php - 比较两个 PHP 数组