Introduce new overloads of flatMap and flatMapTo
- Sequence<T>.flatMap((T) -> Iterable<R>) - Iterable<T>.flatMap((T) -> Sequence<R>) - Array<T>.flatMap((T) -> Sequence<R>) - Map.flatMap((Entry) -> Sequence<R>) KT-34506
This commit is contained in:
+8
@@ -1087,6 +1087,8 @@ public final class kotlin/collections/ArraysKt {
|
||||
public static final fun flatMap ([Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMap ([SLkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMap ([ZLkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequence ([Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequenceTo ([Ljava/lang/Object;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo ([BLjava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo ([CLjava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo ([DLjava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
@@ -2136,6 +2138,8 @@ public final class kotlin/collections/CollectionsKt {
|
||||
public static final fun firstOrNull (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun firstOrNull (Ljava/util/List;)Ljava/lang/Object;
|
||||
public static final fun flatMap (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequence (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequenceTo (Ljava/lang/Iterable;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo (Ljava/lang/Iterable;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatten (Ljava/lang/Iterable;)Ljava/util/List;
|
||||
public static final fun fold (Ljava/lang/Iterable;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
@@ -2401,6 +2405,8 @@ public final class kotlin/collections/MapsKt {
|
||||
public static final fun filterTo (Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Ljava/util/Map;
|
||||
public static final fun filterValues (Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Ljava/util/Map;
|
||||
public static final fun flatMap (Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequence (Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
|
||||
public static final fun flatMapSequenceTo (Ljava/util/Map;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo (Ljava/util/Map;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun forEach (Ljava/util/Map;Lkotlin/jvm/functions/Function1;)V
|
||||
public static final fun getOrImplicitDefaultNullable (Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
|
||||
@@ -4780,6 +4786,8 @@ public final class kotlin/sequences/SequencesKt {
|
||||
public static final fun firstOrNull (Lkotlin/sequences/Sequence;)Ljava/lang/Object;
|
||||
public static final fun firstOrNull (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun flatMap (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
|
||||
public static final fun flatMapIterable (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
|
||||
public static final fun flatMapIterableTo (Lkotlin/sequences/Sequence;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatMapTo (Lkotlin/sequences/Sequence;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;)Ljava/util/Collection;
|
||||
public static final fun flatten (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
||||
public static final fun flattenSequenceOfIterable (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
||||
|
||||
@@ -304,7 +304,37 @@ object Mapping : TemplateGroupBase() {
|
||||
}
|
||||
specialFor(Sequences) {
|
||||
inline(Inline.No)
|
||||
signature("flatMap(transform: (T) -> Sequence<R>)")
|
||||
since("1.4")
|
||||
annotation("@OptIn(kotlin.experimental.ExperimentalTypeInference::class)")
|
||||
annotation("@OverloadResolutionByLambdaReturnType")
|
||||
annotation("""@kotlin.jvm.JvmName("flatMapIterable")""")
|
||||
doc { "Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence." }
|
||||
returns("Sequence<R>")
|
||||
body {
|
||||
"return FlatteningSequence(this, transform, { it.iterator() })"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val f_flatMapSequence = fn("flatMap(transform: (T) -> Sequence<R>)") {
|
||||
include(Sequences, Iterables, ArraysOfObjects, Maps)
|
||||
} builder {
|
||||
inline()
|
||||
doc { "Returns a single list of all elements yielded from results of [transform] function being invoked on each ${f.element} of original ${f.collection}." }
|
||||
sample("samples.collections.Collections.Transformations.flatMap")
|
||||
typeParam("R")
|
||||
returns("List<R>")
|
||||
body {
|
||||
"return flatMapTo(ArrayList<R>(), transform)"
|
||||
}
|
||||
if (f != Sequences) {
|
||||
since("1.4")
|
||||
annotation("@OptIn(kotlin.experimental.ExperimentalTypeInference::class)")
|
||||
annotation("@OverloadResolutionByLambdaReturnType")
|
||||
annotation("""@kotlin.jvm.JvmName("flatMapSequence")""")
|
||||
}
|
||||
specialFor(Sequences) {
|
||||
inline(Inline.No)
|
||||
doc { "Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence." }
|
||||
returns("Sequence<R>")
|
||||
body {
|
||||
@@ -322,7 +352,35 @@ object Mapping : TemplateGroupBase() {
|
||||
|
||||
doc { "Appends all elements yielded from results of [transform] function being invoked on each ${f.element} of original ${f.collection}, to the given [destination]." }
|
||||
specialFor(Sequences) {
|
||||
signature("flatMapTo(destination: C, transform: (T) -> Sequence<R>)")
|
||||
since("1.4")
|
||||
annotation("@OptIn(kotlin.experimental.ExperimentalTypeInference::class)")
|
||||
annotation("@OverloadResolutionByLambdaReturnType")
|
||||
annotation("""@kotlin.jvm.JvmName("flatMapIterableTo")""")
|
||||
}
|
||||
typeParam("R")
|
||||
typeParam("C : MutableCollection<in R>")
|
||||
returns("C")
|
||||
body {
|
||||
"""
|
||||
for (element in this) {
|
||||
val list = transform(element)
|
||||
destination.addAll(list)
|
||||
}
|
||||
return destination
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
val f_flatMapToSequence = fn("flatMapTo(destination: C, transform: (T) -> Sequence<R>)") {
|
||||
include(Sequences, Iterables, ArraysOfObjects, Maps)
|
||||
} builder {
|
||||
inline()
|
||||
doc { "Appends all elements yielded from results of [transform] function being invoked on each ${f.element} of original ${f.collection}, to the given [destination]." }
|
||||
if (f != Sequences) {
|
||||
since("1.4")
|
||||
annotation("@OptIn(kotlin.experimental.ExperimentalTypeInference::class)")
|
||||
annotation("@OverloadResolutionByLambdaReturnType")
|
||||
annotation("""@kotlin.jvm.JvmName("flatMapSequenceTo")""")
|
||||
}
|
||||
typeParam("R")
|
||||
typeParam("C : MutableCollection<in R>")
|
||||
|
||||
Reference in New Issue
Block a user