From 36984009e908b923548098ba887a230fc6885965 Mon Sep 17 00:00:00 2001 From: kvirolainen Date: Sun, 5 Jan 2020 13:18:54 +0300 Subject: [PATCH] Add samples for flatten, unzip functions --- .../test/samples/collections/sequences.kt | 26 +++++++++++++++++++ .../src/kotlin/collections/Sequences.kt | 6 +++++ 2 files changed, 32 insertions(+) diff --git a/libraries/stdlib/samples/test/samples/collections/sequences.kt b/libraries/stdlib/samples/test/samples/collections/sequences.kt index 548d6e1e9ef..b9b0301a231 100644 --- a/libraries/stdlib/samples/test/samples/collections/sequences.kt +++ b/libraries/stdlib/samples/test/samples/collections/sequences.kt @@ -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 = generateSequence(1) { it + 1 } + val sequenceOfSequences: Sequence> = 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 = sequenceOf("123", "45") + val sequenceOfLists: Sequence> = 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]") + } } } \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/collections/Sequences.kt b/libraries/stdlib/src/kotlin/collections/Sequences.kt index 11fd0d86c15..2c45ff2cf71 100644 --- a/libraries/stdlib/src/kotlin/collections/Sequences.kt +++ b/libraries/stdlib/src/kotlin/collections/Sequences.kt @@ -76,6 +76,8 @@ public fun Sequence.ifEmpty(defaultValue: () -> Sequence): Sequence * 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 Sequence>.flatten(): Sequence = flatten { it.iterator() } @@ -83,6 +85,8 @@ public fun Sequence>.flatten(): Sequence = 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 Sequence>.flatten(): Sequence = flatten { it.iterator() } @@ -100,6 +104,8 @@ private fun Sequence.flatten(iterator: (T) -> Iterator): Sequence Sequence>.unzip(): Pair, List> { val listT = ArrayList()