Kotlin 中紧凑的 null 和空性检查?
Compact null and emptyness check in Kotlin?
我有一个 null 和 not empty 检查:
myLocalVariable: String? = null
//..
if (item.data.propertyList !== null && item.data.propertyList!!.isNotEmpty()) {
myLocalVariable = item.data.propertyList!![0]
}
我不喜欢 !!
-Operators,我打赌还有更漂亮、更紧凑的 Kotlin 方式?
提案 1:
item.data.propertyList?.let {
if (it.isNotEmpty()) myLocalVariable = it[0]
}
我仍然封装了 ?.let
和另一个 if
子句。
提案 2:
fun List<*>?.notNullAndNotEmpty(f: ()-> Unit){
if (this != null && this.isNotEmpty()){
f()
}
}
到这里,还是不够紧凑,不过多用几次,可能会有帮助。我仍然不知道如何访问非空列表:
item.data.propertyList.notNullAndNotEmpty() {
myLocalVariable = ?
}
有内置的isNullOrEmpty
方法:
if (!item.data.propertyList.isNullOrEmpty()) {
// provided that propertyList is a val, you do not need !! here
myLocalVariable = item.data.propertyList[0]
// otherwise, use "?."
// myLocalVariable = item.data.propertyList?.get(0)
}
不需要任何 if 检查的最简单和最紧凑的方法就是:
myLocalVariable = item.data.propertyList?.firstOrNull()
如果你想在 null
的情况下防止覆盖,你可以这样做:
myLocalVariable = item.data.propertyList?.firstOrNull() ?: myLocalVariable
我有一个 null 和 not empty 检查:
myLocalVariable: String? = null
//..
if (item.data.propertyList !== null && item.data.propertyList!!.isNotEmpty()) {
myLocalVariable = item.data.propertyList!![0]
}
我不喜欢 !!
-Operators,我打赌还有更漂亮、更紧凑的 Kotlin 方式?
提案 1:
item.data.propertyList?.let {
if (it.isNotEmpty()) myLocalVariable = it[0]
}
我仍然封装了 ?.let
和另一个 if
子句。
提案 2:
fun List<*>?.notNullAndNotEmpty(f: ()-> Unit){
if (this != null && this.isNotEmpty()){
f()
}
}
到这里,还是不够紧凑,不过多用几次,可能会有帮助。我仍然不知道如何访问非空列表:
item.data.propertyList.notNullAndNotEmpty() {
myLocalVariable = ?
}
有内置的isNullOrEmpty
方法:
if (!item.data.propertyList.isNullOrEmpty()) {
// provided that propertyList is a val, you do not need !! here
myLocalVariable = item.data.propertyList[0]
// otherwise, use "?."
// myLocalVariable = item.data.propertyList?.get(0)
}
不需要任何 if 检查的最简单和最紧凑的方法就是:
myLocalVariable = item.data.propertyList?.firstOrNull()
如果你想在 null
的情况下防止覆盖,你可以这样做:
myLocalVariable = item.data.propertyList?.firstOrNull() ?: myLocalVariable