spand
02/12/2020, 8:59 AMgian
02/12/2020, 9:26 AM.zipWithNext().forEach { (a, b) -> }
spand
02/12/2020, 9:34 AMlistOf(1,2,3).zipWithNext().forEach { println(it.first); println("-"); println(it.second) }
Gives
1-22-3
wasyl
02/12/2020, 10:06 AMIterable<T>.joinTo
where you can provide an appendable buffer to put elements intoCzar
02/12/2020, 12:48 PM1-2
2-3
?spand
02/12/2020, 12:48 PMCzar
02/12/2020, 12:49 PMspand
02/12/2020, 12:51 PMprivate inline fun <T> Iterable<T>.intersperseEach(separator: () -> Unit = {}, before: () -> Unit = {}, after: () -> Unit = {}, action: (T) -> Unit): Unit {
val ite = iterator()
var first = true
before()
while (ite.hasNext()) {
if (first) {
first = false
} else {
separator()
}
action(ite.next())
}
after()
}
Seems like it fits in the stdlib imo.Czar
02/12/2020, 12:52 PMspand
02/12/2020, 12:53 PMwasyl
02/12/2020, 12:54 PMspand
02/12/2020, 12:57 PM<div></div>
<hr />
<div></div>
Pretty standard stuffKristoffer Andersen
02/12/2020, 12:57 PMval ite = iterator()
before()
if (!ite.hasNext()) { after(); return }
action(ite.next())
while (ite.hasNext()) {
separator()
action(ite.next())
}
after()
spand
02/12/2020, 12:57 PMCzar
02/12/2020, 1:02 PMval result = mutableListOf<String>()
val input = listOf(1, 2, 3)
val iter = input.iterator()
iter.forEachRemaining {
result.add(it.toString())
if (iter.hasNext()) result.add("-")
}
println(result) // gives: [1, -, 2, -, 3]
Isn't this what you're looking for then?spand
02/12/2020, 1:05 PMCzar
02/12/2020, 1:07 PMfun <T> Iterable<T>.intersperseEach(
separator: () -> Unit = {},
before: () -> Unit = {},
after: () -> Unit = {},
action: (T) -> Unit
) {
before()
val iterator = iterator()
iterator.forEachRemaining {
action(it)
if (iterator.hasNext()) separator()
}
after()
}
listOf("<div></div>", "<div></div>").intersperseEach(
separator = { println("<br />") },
action = ::println
)
// prints:
// <div></div>
// <br />
// <div></div>
spand
02/12/2020, 1:16 PMCzar
02/12/2020, 1:17 PM@Alexander_Czar
on YTspand
02/12/2020, 1:34 PMDerek Peirce
02/13/2020, 4:10 AMbefore
and after
? Those could each be replaced with also
.spand
02/13/2020, 8:19 AM