zip所在位置是kotlin.sequences.zip,其相关用法介绍如下。

用法一

infix fun <T, R> Sequence<T>.zip(
    other: Sequence<R>
): Sequence<Pair<T, R>>

返回从具有相同索引的this 序列和other 序列的元素构建的值序列。一旦最短的输入序列结束,结果序列就会结束。

操作是 intermediatestateless

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val sequenceA = ('a'..'z').asSequence()
val sequenceB = generateSequence(1) { it * 2 + 1 }

println((sequenceA zip sequenceB).take(4).toList()) // [(a, 1), (b, 3), (c, 7), (d, 15)]
//sampleEnd
}

输出:

[(a, 1), (b, 3), (c, 7), (d, 15)]

用法二

fun <T, R, V> Sequence<T>.zip(
    other: Sequence<R>, 
    transform: (a: T, b: R) -> V
): Sequence<V>

使用提供的应用于每对元素的 transform 函数,返回从 this 序列和具有相同索引的 other 序列的元素构建的值序列。一旦最短的输入序列结束,结果序列就会结束。

操作是 intermediatestateless

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val sequenceA = ('a'..'z').asSequence()
val sequenceB = generateSequence(1) { it * 2 + 1 }

val result = sequenceA.zip(sequenceB) { a, b -> "$a/$b" }
println(result.take(4).toList()) // [a/1, b/3, c/7, d/15]
//sampleEnd
}

输出:

[a/1, b/3, c/7, d/15]