Как сделать сравнение как больше или меньше чем с «Safe Cast» - PullRequest
0 голосов
/ 30 августа 2018

В Котлине: получение значения с использованием get без ? недопустимо. Но с ? сравнение не приемлемо. Я искал об этом, но не мог найти решение.

Пример кода

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

if(v > BuildConfig.VERSION_CODE){

}

Ответы [ 4 ]

0 голосов
/ 30 августа 2018

Если вам нравится стиль программирования с функциями высшего порядка, я бы порекомендовал эту идиому для вашего кода:

document.getData()
        ?.get("curr_version")
        ?.takeIf { it > BuildConfig.VERSION_CODE }
        ?.also {
           ...
        }
0 голосов
/ 30 августа 2018

Вы можете использовать явную нулевую проверку:

if (v != null && v > BuildConfig.VERSION_CODE) { ... } 
0 голосов
/ 30 августа 2018

я отвечу)

val doc = document.getData()
doc?.let{
    if(it.get("curr_version") > BuildConfig.VERSION_CODE){
        //TODO
    }
}?:run { 
    //TODO If null
}
0 голосов
/ 30 августа 2018

Вы можете использовать оператор elvis для возврата значения по умолчанию, если v равно нулю, например:

if (v ?: 0 > BuildConfig.VERSION_CODE)

или используйте ?.let { }, чтобы убедиться, что v не равно нулю, как:

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

    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...