Verificación de nulidad de Kotlin si el enfoque es funcional … ¿Cómo?

Para una verificación simple como

if (variable != null) { doSomething(variable) } 

Podríamos cambiar a

 variable?.let { doSometing(it) } 

Sin embargo, para un caso con otra persona

 if (variable != null) { doSomething(variable) } else { doOtherThing() } 

¿Hay alguna forma de hacerlo en una sola function? ¿Hay algo como algo?

¿Puedes usar el elvis-operator ?: Así:

 variable?.let { doSomething(it) } ?: doOtherThing() 

Sin embargo, personalmente, creo que esto se vuelve muy ilegible muy rápidamente. No hay nada malo con una expresión if.

Otro enfoque que puede sonar bien con el estilo funcional es el uso de when, que está muy cerca de la coincidencia de patrones:

 when(variable) { null -> doOtherThingSomething() else -> doSomething(variable) } 

Sin embargo, sostendría que debe tener cuidado al abandonar la statement if clásica, si lo que busca es su propósito natural: la ejecución condicional. Si está calculando un valor de dos maneras diferentes y luego usándolo de la misma manera, este enfoque tiene sentido. Pero si las routes de código divergen en este punto y no se vuelven a encontrar, entonces proporciona una intención más clara.

Puede mapear el valor nulable si no es nulo utilizando el operador ternario para verificar la condición no nula con If … Else Statements.

Aquí, había escrito un fragment de código para verificar el valor nulo o no,

Caso 1: valor inicializado

  fun main(args: Array<String>) { val value:Int ?= 10 val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..." println(mapped) } 

Tienes que dar resultado: el valor es == 10

Caso 2: set de valores sigue siendo nulo

  fun main(args: Array<String>) { val value:Int ?= null val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..." println(mapped) } 

Tienes que dar resultado: el valor no se inicializó …

  • Kotlin: confusión con los generics
  • Escriba inferencia con initialization diferida y método de fábrica genérico en Kotlin
  • Reactor Flux <MyObject> a Mono <List <MyObject >>
  • Kotlin devuelve el mismo object del método Factory
  • XML a / desde Java / Kotlin, multiplataforma
  • Usar con autoclose en Kotlin
  • Cómo establecer maxLength en Anko
  • Métodos sobrecargados que reciben funciones de order superior en Kotlin
  • Cómo enviar el valor de params como json array
  • Kotlin generics en KFunction1
  • Obtener los elementos de una list de lists con la API de transmisión de Java en Kotlin