3

我想尽可能简洁(但清楚地)将 a 转换List<Triple<String, String, String>为 a Triple<List<String>, List<String>, List<String>>

例如,假设执行转换的方法被称为turnOver,我希望:

val matches = listOf(
  Triple("a", "1", "foo"),
  Triple("b", "2", "bar"),
  Triple("c", "3", "baz"),
  Triple("d", "4", "qux")
)
val expected = Triple(
  listOf("a", "b", "c", "d"),
  listOf("1", "2", "3", "4"),
  listOf("foo", "bar", "baz", "qux")
)
matches.turnOver() == expected // true

如何编写一个简洁、清晰、可能具有功能性的turnOver函数?

可以使用 Arrow-Kt,我已经将它作为项目依赖项。

4

2 回答 2

7
fun turnOver(matches: List<Triple<String, String, String>>) = Triple(
   matches.map { it.first },
   matches.map { it.second },
   matches.map { it.third },
)

我认为这将是一个明显的解决方案。

于 2020-07-01T11:00:13.217 回答
-2

据我所知,在 kotlin 标准库中无法从可迭代、数组或序列中创建 Pair 或 Triple。我相信这是故意的。所以我想上面是最清晰的解决方案。

于 2020-07-01T12:28:41.783 回答