标准库在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/