作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用类似(下面的代码)的东西,但我认为必须有一个更好的解决方案,使用 lastOrNull()
而不是使用 isEmpty
和 最后()
data class Entry(val x: Float, val y: Float)
var entries: MutableList<Entry> = ArrayList()
if(some) {
entries.add(Entry(100f, 200f)
}
val foo = (if (entries.isEmpty()) 0f else entries.last().y) + 100f
有没有更好的方法,比如 entries.lastOrNull()?.y if null 0f
?
最佳答案
您可以使用 Kotlin elvis operator ?:
,例如:
// if the expression `entries.lastOrNull()?.y` is null then return `0f`
// v
val lastY = entries.lastOrNull()?.y ?: 0f
对于上面代码中的表达式,您可以使用 safe-call ?.let
/?.run
让你的代码更清晰,例如:
//val foo = if (entries.isEmpty()) 0f else entries.last().y + 100f else 100f
// if no Entry in List return `0F` ---v
val foo = entries.lastOrNull()?.run { y + 100 } ?: 0F
// ^--- otherwise make the last.y + 100
关于list - Kotlin 将集合中的 isEmpty()&last() 替换为 lastOrNull(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45055677/
我想使用类似(下面的代码)的东西,但我认为必须有一个更好的解决方案,使用 lastOrNull() 而不是使用 isEmpty 和 最后() data class Entry(val x: Float
我是一名优秀的程序员,十分优秀!