Por qué var foo = null comstack

Estoy empezando con Kotlin y tratando de entender algo.

var foo: String = null no se comstack como se esperaba.

var foo: String? = null var foo: String? = null debe ser la syntax correcta y comstackr como se espera.

Entonces, ¿por qué var foo = null comstack?

El tipo de foo en este caso se deducirá a Nothing? , que es un tipo muy especial. En resumen, Nothing es un tipo que es un subtipo de todo tipo en Kotlin (por lo tanto, Nothing? Es un subtipo de cada tipo que admite nulos), no tiene instancias y se puede usar como un tipo de retorno para funciones que nunca pueden regresar.

Aunque Nothing puede tener instancias, null de tipo Nothing? , que es por lo que se puede asignar a cualquier variable que admite nulos.

Puede get más información acerca de Nothing en los documentos oficiales , en este excelente artículo de nivel medio , y en este artículo que cubre la jerarquía general de types de Kotlin.

Para var foo = null , ¿el tipo se deduce a Nothing? y, por lo tanto, es una syntax válida.

var foo = null es equivalente a var foo:Nothing? = null var foo:Nothing? = null

similar

var foo = "" es equivalente a var foo:String = ""

y slo

var foo = 1 es equivalente a var foo:Int = 1

El comstackdor es lo suficientemente inteligente como para inferir el tipo de foo del tipo de expresión de la mano derecha.

  • com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: se esperaba BEGIN_ARRAY pero estaba STRING en la ruta de la columna 1 de la línea 1
  • Intellij no construye classs
  • ¿Puede la class de datos Kotlin tener más de un constructor?
  • Visibilidad No funciona con Kotlin
  • Kotlin - Función de fábrica para class con constructor privado
  • Reproducción solo del audio 1, no 2, 3 y 4
  • Tornadofx - Cómo pasar el parámetro a Fragment en cada instancia
  • ¿Cómo pasar vararg como matriz para funcionar en Kotlin?
  • La reference Int :: class.javaPrimitiveType.kotlin no es igual a Int :: class.javaObjectType.kotlin
  • Revertir códigos de Kotlin a Java en Android Studio Canary 5
  • Prueba de Android en kotlin de reino