Как сделать сравнение, как больше или меньше, чем с "Safe Casts"
В Котлине: получение стоимости с помощью get
без ?
неприемлимо. Но с ?
сравнение не приемлемо. Я искал об этом, но не мог найти решение.
Пример кода
var doc = document.getData();
var v = doc?.get("curr_version");
if(v > BuildConfig.VERSION_CODE){
}
4 ответа
Вы можете использовать явную нулевую проверку:
if (v != null && v > BuildConfig.VERSION_CODE) { ... }
Если вам нравится стиль программирования с функциями высшего порядка, я рекомендую эту идиому для вашего кода:
document.getData()
?.get("curr_version")
?.takeIf { it > BuildConfig.VERSION_CODE }
?.also {
...
}
Вы можете использовать оператор elvis для возврата значения по умолчанию, если v
равно нулю как:
if (v ?: 0 > BuildConfig.VERSION_CODE)
или использовать ?.let { }
чтобы быть уверенным, что v не равно нулю, как:
v?.let {
if (it > BuildConfig.VERSION_CODE) {
}
}
Я отвечу)
val doc = document.getData()
doc?.let{
if(it.get("curr_version") > BuildConfig.VERSION_CODE){
//TODO
}
}?:run {
//TODO If null
}