La mejor forma de manejar los retornos en el pnetworkingicado

Cuando devuelvo una function en un pnetworkingicado, el comstackdor no la registra y todavía se queja

Se requiere una expresión 'return' para una function con un bloque de cuerpo

La solución que encontré es poner un tiro después del pnetworkingicado.

fun boo(): Int { sth.apply { return sthElse } throw Exception("Unkown View type") } 

Me pregunto si hay una manera más amable.

ps: el código de Android real

 override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder { LayoutInflater.from(parent?.context) .inflate(R.layout.item_category_node, parent, false) .apply { return CategoryNodeViewHolder(this, this@CategoriesAdapter) } throw Exception("View type error") } 

EDITAR: después de ver tu ejemplo:

  override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = LayoutInflater.from(parent?.context) .inflate(R.layout.item_category_node, parent, false) .let { CategoryNodeViewHolder(this, this@CategoriesAdapter) } 

La function de extensión 'ejecutar' debe usarse en estas situaciones. De acuerdo con kotlin docs run

Llama al bloque de function especificado y devuelve su resultado.

Mi código se ve así ahora

 override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder { return LayoutInflater.from(parent?.context) .inflate(R.layout.item_category_node, parent, false) .run { CategoryNodeViewHolder(this, this@CategoriesAdapter) } //throw Exception("Unkown View type") } 

La function aplicar ya tiene una statement de devolución del object al que se está llamando, consulte https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html

 override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = CategoryNodeViewHolder( LayoutInflater.from(parent?.context).apply{ inflate(R.layout.item_category_node, parent, false) }, this@CategoriesAdapter) 

Esto ahora está devolviendo el tipo de object correcto para el método, al instanciar el layoutInflater y aplicando el inflado requerido para el CategoryNodeViewHolder antes de que se use para instanciar el CategoryNodeViewHolder.

  • Smart Cast a 'Tipo' es imposible, porque 'variable' es una propiedad mutable que podría haber cambiado en este momento
  • ¿Hay alguna manera de hacer que scroll de ViewPager DecorView tenga el contenido del fragment?
  • Spring & kotlin: ¿Cuál es la diferencia entre el constructor y la inyección tardía?
  • Diseños de Anko: layouts distintivos en applyRecursively
  • El método RXjava2 en fromCallable no se puede exceder
  • El text de la label no se actualiza aunque el hilo de la interfaz de usuario parece responder
  • Android Studio muestra errores en layout.xml
  • BiMap / hashmap bidireccional en Kotlin
  • Modificar el comportamiento de List.get en Kotlin
  • Problema al convertir Java bean con inheritance a Kotlin
  • Retrofit API call: ¿Cómo asegurarse de que el valor no sea nulo después de realizar una llamada de API?