firstNotNullOf
所在位置是kotlin.collections.firstNotNullOf
,其相关用法介绍如下。
用法一
返回由transform函数产生的第一个非空值,该函数按迭代顺序应用于此数组的元素,如果没有产生非空值,则抛出NoSuchElementException。
例子:
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
}
输出:
18 18 null
用法二
返回由transform函数产生的第一个非空值,该函数按迭代顺序应用于此集合的元素,如果没有产生非空值,则抛出NoSuchElementException。
例子:
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
}
输出:
18 18 null
用法三
返回由transform函数产生的第一个非空值,该函数按迭代顺序应用于此映射的条目,如果没有产生非空值,则抛出NoSuchElementException。
例子:
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
}
输出:
18 18 null
相关用法
- Kotlin firstNotNullOfOrNull用法及代码示例
- Kotlin filterNot用法及代码示例
- Kotlin filterNotTo用法及代码示例
- Kotlin filterKeys用法及代码示例
- Kotlin filterTo用法及代码示例
- Kotlin filterNotNull用法及代码示例
- Kotlin filterIsInstance用法及代码示例
- Kotlin filterIsInstanceTo用法及代码示例
- Kotlin findLast用法及代码示例
- Kotlin find用法及代码示例
- Kotlin filterNotNullTo用法及代码示例
- Kotlin filterIndexedTo用法及代码示例
- Kotlin filterValues用法及代码示例
- Kotlin filter用法及代码示例
- Kotlin filterIndexed用法及代码示例
- Kotlin flatten用法及代码示例
- Kotlin forEach用法及代码示例
- Kotlin flatMap用法及代码示例
- Kotlin fold用法及代码示例
- Kotlin foldTo用法及代码示例
- Kotlin flatMapIndexed用法及代码示例
- Kotlin associateBy用法及代码示例
- Kotlin all用法及代码示例
- Kotlin map用法及代码示例
- Kotlin reduceRight用法及代码示例
注:本文由纯净天空筛选整理自kotlinlang.org大神的英文原创作品 kotlin.collections.firstNotNullOf。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。