Compare commits

...

3 Commits

Author SHA1 Message Date
Abduqodiri Qurbonzoda
ef0b228bdf Specify sequence type explicitly to clarify sample 2020-08-09 18:20:36 +03:00
Abduqodiri Qurbonzoda
1f3607cf88 Fix flatten and unzip samples 2020-08-06 08:15:12 +03:00
kvirolainen
e559ca21c5 Samples on flatten, unzip 2020-08-06 07:45:32 +03:00
2 changed files with 32 additions and 0 deletions

View File

@@ -242,6 +242,32 @@ class Sequences {
assertPrints(even, "[0, 2, 8, 34]")
assertPrints(odd, "[1, 1, 3, 5, 13, 21]")
}
@Sample
fun flattenSequenceOfSequences() {
val sequence: Sequence<Int> = generateSequence(1) { it + 1 }
val sequenceOfSequences: Sequence<Sequence<Int>> = sequence.map { number ->
generateSequence { number }.take(number)
}
assertPrints(sequenceOfSequences.flatten().take(10).toList(), "[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]")
}
@Sample
fun flattenSequenceOfLists() {
val sequence: Sequence<String> = sequenceOf("123", "45")
val sequenceOfLists: Sequence<List<Char>> = sequence.map { it.toList() }
assertPrints(sequenceOfLists.flatten().toList(), "[1, 2, 3, 4, 5]")
}
@Sample
fun unzip() {
val result = generateSequence(0 to 1) { it.first + 1 to it.second * 2 }.take(8).unzip()
assertPrints(result.first.toList(), "[0, 1, 2, 3, 4, 5, 6, 7]")
assertPrints(result.second.toList(), "[1, 2, 4, 8, 16, 32, 64, 128]")
}
}
}

View File

@@ -76,6 +76,8 @@ public fun <T> Sequence<T>.ifEmpty(defaultValue: () -> Sequence<T>): Sequence<T>
* Returns a sequence of all elements from all sequences in this sequence.
*
* The operation is _intermediate_ and _stateless_.
*
* @sample samples.collections.Sequences.Transformations.flattenSequenceOfSequences
*/
public fun <T> Sequence<Sequence<T>>.flatten(): Sequence<T> = flatten { it.iterator() }
@@ -83,6 +85,8 @@ public fun <T> Sequence<Sequence<T>>.flatten(): Sequence<T> = flatten { it.itera
* Returns a sequence of all elements from all iterables in this sequence.
*
* The operation is _intermediate_ and _stateless_.
*
* @sample samples.collections.Sequences.Transformations.flattenSequenceOfLists
*/
@kotlin.jvm.JvmName("flattenSequenceOfIterable")
public fun <T> Sequence<Iterable<T>>.flatten(): Sequence<T> = flatten { it.iterator() }
@@ -100,6 +104,8 @@ private fun <T, R> Sequence<T>.flatten(iterator: (T) -> Iterator<R>): Sequence<R
* *second* list is built from the second values of each pair from this sequence.
*
* The operation is _terminal_.
*
* @sample samples.collections.Sequences.Transformations.unzip
*/
public fun <T, R> Sequence<Pair<T, R>>.unzip(): Pair<List<T>, List<R>> {
val listT = ArrayList<T>()