beholder
09/24/2018, 3:17 PMilya.gorbunov
09/24/2018, 3:30 PMbeholder
09/24/2018, 3:45 PMfun <T : Any> possiblySequence(element: T?): Sequence<T> =
if (element == null) emptySequence() else sequenceOf(element)
но экономнейinternal class SingletonSequence<T>(private val element: T) : Sequence<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
private var hasNext = true
override fun hasNext(): Boolean = hasNext
override fun next(): T = if (hasNext) {
hasNext = false
element
} else {
throw NoSuchElementException()
}
}
}
ilya.gorbunov
09/24/2018, 5:51 PMsequenceOfNotNull
по аналогии с listOfNotNull
.
Пока еще можно предложить listOfNotNull(...).asSequence()
, или, если нужно сделать flatMap
то:
someSequence.map { listOfNotNull(possiblyNullableTransform(it)) }.flatten()
someSequence.mapNotNull { possiblyNullableTransform(it) }