https://kotlinlang.org logo
#russian
Title
# russian
b

beholder

11/23/2017, 5:43 PM
Для скорости можно было бы сделать функцию
Copy code
inline fun <T, R> Sequence<T>.findFirstNotNullResult(transform: (T) -> R): R? {
    for (element in this) {
        val result = transform(element)
        if (result != null) {
            return result
        }
    }
    return null
}
i

ilya.gorbunov

11/23/2017, 6:49 PM
Да, такая функция была бы очень полезна, но у нее одна проблема — подобрать для нее подходящее имя. https://youtrack.jetbrains.com/issue/KT-12109
b

beholder

11/23/2017, 7:15 PM
Я и не думал её в stdlib предлагать :)
Тогда вот ещё короче :)
Copy code
inline fun <T, R> Sequence<T>.findFirstNotNullResult(transform: (T) -> R): R? {
    for (element in this) transform(element)?.also { return it };
    return null
}