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.

  • Atajo de IntelliJ para la configuration de ejecución
  • La inferencia del tipo Kotlin falló
  • Sala: entidades relacionadas - constructor público utilizable
  • Simulacro y testing de unidad un Fragmento usando Spek y Mockito
  • Referencia de KClass para valores anulables
  • Kotlin y generics, implementando class genérica abstracta con matriz genérica
  • Obtener FragmentManager dentro de AndroidViewModel
  • Clase Kotlin que implementa el error de la interfaz de Java
  • Usando la cláusula Kotlin WHEN para <, <=,> =,> comparaciones
  • No se puede actualizar el valor del parámetro del método Kotlin
  • Kotlin y RxJava2 zip operator - Ninguna de las siguientes funciones puede invocarse con los arguments suministrados