Kotlin 提供take
and takeWhile
先采取的方法n
的项目Sequence<T>
并将它们作为另一个序列单独处理,例如,drop
他们中有一些,map
到其他值等
但是当我使用take
and takeWhile
,序列的尾部被丢弃。
现在,给定一个一度受限序列,如何将其任意前缀转换为保留尾部的另一个序列(如果它仍然存在)?
Example:
val seq = (1..10).asSequence().constrainOnce()
// emits 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
val modified = seq.changePrefix { take(5).map { -1 * it } }
// emits -1, -2, -3, -4, -5, 6, 7, 8, 9, 10
如何对多个前缀执行相同的操作?
Example:
val seq = (1..10).asSequence().constrainOnce()
val modified = seq.changePrefixes(
{ take(3).map { it * -1 } },
{ drop(1).take(3).map { it * 100 } },
{ map { 0 } }
)
//emits -1, -2, -3, 500, 600, 700, 0, 0, 0
注意:这个问题是故意提出的作者回答 https://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/.