Scan functions for Sequences and Iterable #KT-7657

This commit is contained in:
Abduqodiri Qurbonzoda
2020-01-24 04:42:19 +03:00
parent 0d7e641736
commit ed7b8e9b85
16 changed files with 2411 additions and 0 deletions
@@ -697,6 +697,24 @@ class Collections {
assertPrints(emptyList<String>().reduceRightOrNull { _, _ -> "" }, "null")
}
@Sample
fun scan() {
val strings = listOf("a", "b", "c", "d")
assertPrints(strings.scan("s") { acc, string -> acc + string }, "[s, sa, sab, sabc, sabcd]")
assertPrints(strings.scanIndexed("s") { index, acc, string -> acc + string + index }, "[s, sa0, sa0b1, sa0b1c2, sa0b1c2d3]")
assertPrints(emptyList<String>().scan("s") { _, _ -> "X" }, "[s]")
}
@Sample
fun scanReduce() {
val strings = listOf("a", "b", "c", "d")
assertPrints(strings.scanReduce { acc, string -> acc + string }, "[a, ab, abc, abcd]")
assertPrints(strings.scanReduceIndexed { index, acc, string -> acc + string + index }, "[a, ab1, ab1c2, ab1c2d3]")
assertPrints(emptyList<String>().scanReduce { _, _ -> "X" }, "[]")
}
}
class Elements {