有一种惯用的方法将a Pair转换为List:
Pair(a, b).toList()
Run Code Online (Sandbox Code Playgroud)
不,我正在寻找相反的过程.我最好的方法是这样的:
Pair(list[0], list[1])
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要先List在代码中创建一个值才能使其正常工作.我会喜欢这样的事情:
listOf(a, b).toPair()
Run Code Online (Sandbox Code Playgroud)
对于更通用的解决方案,您可以使用扩展功能zipWithNext*
返回此集合中每两个相邻元素的对的列表.
文档中的示例更好地解释了它:
val letters = ('a'..'f').toList()
val pairs = letters.zipWithNext()
println(letters) // [a, b, c, d, e, f]
println(pairs) // [(a, b), (b, c), (c, d), (d, e), (e, f)]
Run Code Online (Sandbox Code Playgroud)
*请注意,此功能自Kotlin v1.2起可用.
你可以为自己做这个扩展:
fun <T> List<T>.toPair(): Pair<T, T> {
if (this.size != 2) {
throw IllegalArgumentException("List is not of length 2!")
}
return Pair(this[0], this[1])
}
Run Code Online (Sandbox Code Playgroud)
错误处理由您决定,您也可以返回 aPair<T, T>?并null在List长度不正确的情况下返回。您也可以只检查它是否至少有 2 个元素,而不要求它正好有 2 个。
用法如您所述:
listOf(a, b).toPair()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2753 次 |
| 最近记录: |