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ó …

  • Estoy tratando de reproducir música desde SDcard
  • La variación del sitio de la statement puede causar ClassCastException
  • Accediendo a sets fuente con kotlin-dsl para gradle
  • Nombre de image dibujable inaccesible en Kotlin?
  • Representación de imágenes con subprocesss múltiples en JavaFx / Kotlin
  • Procesador de anotación Kotlin: no puede hacer que funcione
  • Encuadernación con vista de Android Kotlin: findViewById vs Butterknife vs Kotlin Android Extension
  • ¿Cómo lidiar con los límites generics migrando de Java a Kotlin?
  • Android: Obtenga un DAO en un ViewModel
  • ¿Por qué no mira hacia adelante y mira detrás del trabajo de Regex en Kotlin?
  • La biblioteca de Kotlin 'classes.jar' tiene un formatting no compatible. Actualice la biblioteca o el complemento