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.

  • ¿Lista floja en kotlin?
  • Kotlin: Pase el object en function como reference y cambie su instancia
  • No puedo usar Kotlin para Serenity-bdd
  • En Kotlin, ¿cómo puedo solucionar el conflicto de declaraciones henetworkingado cuando una class enum implementa una interfaz?
  • Anotación de Kotlin + Dagger2 @Named en el uso del método del proveedor del module
  • ¿Cómo hago un personaje nulo en Kotlin?
  • Habilitar y deshabilitar una transmisión en kotlin
  • Android - Kotlin - para en medio del process
  • ¿Usar EventBus para finalizar una actividad de la actividad base?
  • Cómo proteger el oyente de desplazamiento sin fin de un reciclador
  • ¿Qué packages / funciones se importan de manera pnetworkingeterminada en Kotlin?