标准库在unzip上提供了List方法:


scala>val l = List((1, "one"), (2, "two"), (3, "three"), (4, "four"), (5, "five"))

scala> l.unzip
// res13: (List[Int], List[String]) = (
//  List(1, 2, 3, 4, 5),
//  List("one", "two", "three", "four", "five")
//)


有没有一种方法可以通过NonEmptyList库在cats上实现相同的功能:

scala> import cats.data.NonEmptyList

scala> val nel = NonEmptyList.of((1, "one"), (2, "two"), (3, "three"), (4, "four"), (5, "five"))
//res15: NonEmptyList[(Int, String)] = NonEmptyList(
//  (1, "one"),
//  List((2, "two"), (3, "three"), (4, "four"), (5, "five"))
//)

最佳答案

您不必一次遍历所有步骤,而且通常甚至不想使用其中一部分。我会这样写:

(nel.map(_._1), nel.map(_._2))

这样可以避免尴尬的转换远离NEL并返回。

关于Scala/猫: How to unzip an NonEmptyList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57099165/

10-12 22:53