如何一次迭代列出两个项目?

mic*_*ckp 1 kotlin

是否有一些不错的 Kotlin 习惯用法可以一次有效地迭代一个列表中的两个项目?

就像是:

val items = listOf("one", "two", "three", "four")

items.forEach(2) { item1, item2 ->
   println("$item1 and $item2")    
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

one and two
three and four
Run Code Online (Sandbox Code Playgroud)

Ada*_*hip 9

可能最简单的方法是使用 chunked(2)

listOf(1, 2, 3, 4, 5, 6, 7)
    .chunked(2)
    .forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)

印刷:

[1, 2]
[3, 4]
[5, 6]
[7]
Run Code Online (Sandbox Code Playgroud)

如果确保元素的数量是偶数,则可以使用命名变量访问这些对:

listOf(1, 2, 3, 4, 5, 6)
    .also { require(it.size % 2 == 0) { "Number of elements must be even" } }
    .chunked(2)
    .forEach { (item1, item2) ->
        println("$item1 and $item2")
    }
Run Code Online (Sandbox Code Playgroud)

印刷:

1 and 2
3 and 4
5 and 6
Run Code Online (Sandbox Code Playgroud)