首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin优雅地将List<Triple<String、String、String>转换为Triple<List<String>、List<String>、List<String>>

Kotlin优雅地将List<Triple<String、String、String>转换为Triple<List<String>、List<String>、List<String>>
EN

Stack Overflow用户
提问于 2020-07-01 18:43:50
回答 2查看 620关注 0票数 3

我希望尽可能简洁(但又清晰)地将List<Triple<String, String, String>转换为Triple<List<String>, List<String>, List<String>>

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

代码语言:javascript
复制
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,我已经将其作为项目依赖项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-01 19:00:13

代码语言:javascript
复制
fun turnOver(matches: List<Triple<String, String, String>>) = Triple(
   matches.map { it.first },
   matches.map { it.second },
   matches.map { it.third },
)

我认为这是一个显而易见的解决方案。

票数 7
EN

Stack Overflow用户

发布于 2020-07-01 20:28:42

据我所知,在kotlin stdlib中,没有办法从可迭代、数组或序列中创建一对或三元组。我相信这是故意的。所以我猜上面的是最清晰的可能的解决方案。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62675056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档