繁体   English   中英

紧凑型 null 和 Kotlin 中的空置检查?

[英]Compact null and emptyness check in Kotlin?

我有一个 null 并且不是空检查:

myLocalVariable: String? = null
//..
if (item.data.propertyList !== null && item.data.propertyList!!.isNotEmpty()) {
    myLocalVariable = item.data.propertyList!![0]
}

我不喜欢!! - 运营商和我打赌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-checks 的最简单和最紧凑的方法就是:

myLocalVariable = item.data.propertyList?.firstOrNull()

如果你想防止在null的情况下被覆盖,你可以这样做:

myLocalVariable = item.data.propertyList?.firstOrNull() ?: myLocalVariable 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM