Spec-Zone.ru › Kotlin 1.8

firstNotNullOfOrNull

kotlin-stdlib / kotlin.sequences / firstNotNullOfOrNull
Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)
inline fun <T, R : Any> Sequence<T>.firstNotNullOfOrNull(
    transform: (T) -> R?
): R?

Возвращает первое ненулевое значение, полученное в результате применения функции transform к элементам этой последовательности в порядке итерации, или null если не было получено ненулевого значения.

Операция является терминальной.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
data class Rectangle(val height: Int, val width: Int) {
    val area: Int get() = height * width
}

val rectangles = listOf(
    Rectangle(3, 4),
    Rectangle(1, 8),
    Rectangle(6, 3),
    Rectangle(4, 3),
    Rectangle(5, 7)
)

val largeArea = rectangles.firstNotNullOf { it.area.takeIf { area -> area >= 15 } }
val largeAreaOrNull = rectangles.firstNotNullOfOrNull { it.area.takeIf { area -> area >= 15 } }

println(largeArea) // 18
println(largeAreaOrNull) // 18

// val evenLargerArea = rectangles.firstNotNullOf { it.area.takeIf { area -> area >= 50 } } // will fail with NoSuchElementException
val evenLargerAreaOrNull = rectangles.firstNotNullOfOrNull { it.area.takeIf { area -> area >= 50 } }

println(evenLargerAreaOrNull) // null
//sampleEnd
}

© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.sequences/first-not-null-of-or-null.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API