Intereting Posts
Как запустить класс Kotlin из командной строки? Kotlin: Сравнить значения свойств различных целевых объектов с (out) отражением 'x' не является функцией при передаче параметров в Kotlin Javascript Является ли тип неявного свойства одинаковым с явным типом свойства? Kotlin: Reified generics, похоже, не работают правильно для сравнения hash / equals Dokka – пропустить генератор javadoc для пакетов по умолчанию для Android Android Build Crashes после подписанной сборки Заменить setter для переменной, определенной в конструкторе по умолчанию Функциональная совместимость отражения Котлина с Java Kotlin: Как дочерний класс может использовать функцию расширения родителя в вызове супер-конструктора? SearchView всегда расширялся, на панели инструментов? TextClock в AppWidget не отвечает на вызовы функций MissingMethodInvocationException тестирование открытого класса в Котлине как использовать @jvmoverloads с интерфейсом в Kotlin java.lang.NoClassDefFoundError в Котлине

Kotlin установлен в Null If Not Null

Есть ли в Котлине идиома для установки переменной в значение null, если она еще не равна нулю? Что-то более семантически приятное, чем:

var test: String? = null if(test != null) test = null 

Вы можете использовать исполняемый, если не нулевой idiom :

 test?.let { test = null } 

Просто присвойте null локальной переменной:

 test = null 

В случае, если он не является нулевым, вы присваиваете значение null этой переменной. В случае, если переменная имеет значение null, вы просто присваиваете ей нуль, поэтому ничего не изменилось.

Я придумал эти расширения, которые делают это проще:

 inline fun <T, R> T.letThenNull(block: (T) -> R): T? { block(this); return null } val test: Any? = null ... test = test?.letThenNull { /* do something with test */ }