zipWithNext

Returns a sequence of pairs of each two adjacent elements in this sequence.

The returned sequence is empty if this sequence contains less than two elements.

The operation is intermediate and stateless.

Since Kotlin

1.2

Samples

import kotlin.test.*

fun main() { 
   //sampleStart 
   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)] 
   //sampleEnd
}

fun <T, R> Sequence<T>.zipWithNext(transform: (a: T, b: T) -> R): Sequence<R>(source)

Returns a sequence containing the results of applying the given transform function to an each pair of two adjacent elements in this sequence.

The returned sequence is empty if this sequence contains less than two elements.

The operation is intermediate and stateless.

Since Kotlin

1.2

Samples

import kotlin.test.*

fun main() { 
   //sampleStart 
   val values = listOf(1, 4, 9, 16, 25, 36)
val deltas = values.zipWithNext { a, b -> b - a }

println(deltas) // [3, 5, 7, 9, 11] 
   //sampleEnd
}