如何进行大于或小于“安全投放”的比较

时间:2018-08-30 13:41:42

标签: android kotlin

在科特林: 在没有get的情况下使用?获得价值是不可接受的。但是使用?比较是不可接受的。我确实进行了搜索,但找不到解决方案。

代码示例

var doc = document.getData();
var v = doc?.get("curr_version");

if(v > BuildConfig.VERSION_CODE){

}

4 个答案:

答案 0 :(得分:2)

您可以使用显式的null检查:

if (v != null && v > BuildConfig.VERSION_CODE) { ... } 

答案 1 :(得分:1)

如果v为null,您可以使用elvis运算符返回默认值:

if (v ?: 0 > BuildConfig.VERSION_CODE)

或使用?.let { }确保v不为null,如:

v?.let {
    if (it > BuildConfig.VERSION_CODE) {

    }  
}

答案 2 :(得分:1)

如果您喜欢具有高阶函数的编程风格,建议为您的代码使用以下惯用法:

document.getData()
        ?.get("curr_version")
        ?.takeIf { it > BuildConfig.VERSION_CODE }
        ?.also {
           ...
        }

答案 3 :(得分:0)

我会发誓

val doc = document.getData()
doc?.let{
    if(it.get("curr_version") > BuildConfig.VERSION_CODE){
        //TODO
    }
}?:run { 
    //TODO If null
}