Incluye el logging en el operador de Elvis?

Por lo que puedo ver, la única forma de usar el operador elvis es con una syntax como esta:

foo = bar ?: return 

Tenía curiosidad por saber si alguien había encontrado una manera de include el logging, ya que generalmente el retorno se usa (al less en mi experiencia) cuando algo no se comporta como se esperaba.

Sin embargo, la siguiente syntax no es válida:

 foo = bar ?: { Log.e(TAG, "Some error occurnetworking.") return } 

Por supuesto, podría simplemente hacer lo siguiente,

 foo = bar if (foo == null) { Log.e(TAG, "Some error occurnetworking.") return } 

pero, ¿hay alguna forma de include el logging con el operador de Elvis?

Simplemente use la function run { ... } de kotlin-stdlib , que ejecuta la lambda que se pasa:

 foo = bar ?: run { Log.e(TAG, "Some error occurnetworking.") return } 

El {} es un lambda, deberías invocarlo, por ejemplo:

 // v--- it is a lambda foo = bar ?: return { Log.e(TAG, "Some error occurnetworking.") }() // <--- invoke the lambda 

O invoque una lambda con let :

 foo = bar ?: return let{ Log.e(TAG, "Some error occurnetworking.") } 

Oh, todo lo que tienes que hacer es esto:

 foo = bar ?: kotlin.run { Log.e(TAG, "Some error occurnetworking.") return } 

Esto podría decirse que es less legible que un estándar si es un cheque nulo, pero al less así es como lo haces.

  • Analizando JSON usando Klaxon con Anko's doAsync no se ejecuta
  • Cómo agregar múltiples datos históricos a GoogleFit
  • Kotlin getParcelableArray del set de bashs no puede convertirlo en tipo personalizado
  • Clase de datos de Kotlin, sala de Android y setter personalizado
  • ¿Accediendo a la function de extensión estática de otra class en Kotlin?
  • ¿Por qué mi código inalcanzable?
  • ¿Qué pasó cuando se ejecuta el código HashMap (it)?
  • ¿Imponer una compilation de methods estáticos dentro de una subclass con Kotlin?
  • Enlace de datos de Android y Kotlin
  • Error nulo al usar Glide con kotlin
  • Creación personal inteligente de los cambios de la definición de trabajo Kotlin DSL Teamcity almacenada en Git