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.

  • Cómo eliminar el desenfoque de la vista raíz en android
  • Firebase: ¿manera limpia de usar campos enum en Kotlin / Java?
  • Kotlin no funciona en Android Studio
  • Compruebe nulo en la function de map en Kotlin
  • Cómo get la date y hora local actual en Kotlin
  • Room Kotlin: Entidades y Pojos deben tener un constructor público utilizable
  • Valor de campo de sum de JOOQ: BigDecimal a Int
  • Enlace de datos de Android a CustomView, no es capaz de establecer el model de vista de la actividad al componente
  • En Kotlin, ¿cómo extiendo una class que tiene múltiples constructores?
  • Cuente las ocurrencias de cada label usando la functional programming
  • ¿Puede un object de class creado "sobre la marcha" en Kotlin tener un constructor?