лучший способ проверить null в kotlin?

Должен ли я использовать double = , или triple = ?

 if(a === null) { //do something } 

или

 if(a == null) { //do something } 

Аналогично для «не равно»:

 if(a !== null) { //do something } 

или

 if(a != null) { //do something } 

Оба подхода генерируют один и тот же байт-код, поэтому вы можете выбрать все, что захотите.

Структурное равенство a == b переводится на

 a?.equals(b) ?: (b === null) 

Поэтому при сравнении с null структурное равенство a == null преобразуется в ссылочное равенство a === null .

Согласно документам , нет смысла оптимизировать ваш код, поэтому вы можете использовать a == null и a != null

Обратите внимание, что если переменная является изменчивым свойством, вы не сможете применить ее к типу, не допускающему null, внутри оператора if (поскольку значение могло быть изменено другим потоком), и вам придется использовать безопасный оператор вызова, let вместо этого.

Оператор безопасного вызова ?.

 a?.let { // not null do something println(it) println("not null") } 

Вы можете использовать его в сочетании с оператором Элвиса.

Оператор Элвиса ?: (Я предполагаю, потому что метка опроса похожа на волосы Элвиса)

 a ?: println("null") 

И если вы хотите запустить блок кода

 a ?: run { println("null") println("The King has left the building") } 

Объединение двух

 a?.let { println("not null") println("Wop-bop-a-loom-a-boom-bam-boom") } ?: run { println("null") println("When things go null, don't go with them") } 

Проверьте полезные методы, это может быть полезно:

 /** * Performs [R] when [T] is not null. Block [R] will have context of [T] */ inline fun <T : Any, R> ifNotNull(input: T?, callback: (T) -> R): R? { return input?.let(callback) } /** * Checking if [T] is not `null` and if its function completes or satisfies to some condition. */ inline fun <T: Any> T?.isNotNullAndSatisfies(check: T.() -> Boolean?): Boolean{ return ifNotNull(this) { it.run(check) } ?: false } 

Ниже приведен пример использования этих функций:

 var s: String? = null // ... if (s.isNotNullAndSatisfies{ isEmpty() }{ // do something } 
Intereting Posts
Как создать свойство без аксессуаров в Котлине? Присвоение не допускается при выражении? Как аргумент Default и @JvmOverloads работают над Kotlin? Что такое модуль Котлина? Совместное использование функций расширения между Float и Double в Котлине Как использовать OnClickListener для создания простого события // Изменение текста или цвета Бинарная версия метаданных – 1.0.1, ожидаемая версия – 1.1.0 Связывание представления с изменяющимся свойством контроллера Имя частной собственности не соответствует регулярному выражению IntelliJ IDEA с использованием JavaScript-версии зависимости, указанной в файле сборки Gradle? kotlin alias собственность делегирование исключает исключение Ссылка на функцию расширения? Mocktito ArgumentCaptor для лямбда Котлин с аргументами Могут ли в производстве использоваться «экспериментальные» Kotlin-сопрограммы? В чем преимущества написания кода JavaScript с помощью Kotlin?