Cómo definir una function en línea llamando a una function de variable que se puede anular

Si tengo algo como:

fun showProgressView() = ultraRecyclerView?.showProgressBar()

dice que devuelve la Unit? y no Unit (editada)

—–EDITAR—–

Una de las maneras puede ser fun showProgressView() = ultraRecyclerView?.showProgressBar() ?: Unit pero no parece adecuada para mí.

Otra forma: fun showProgressView() { ultraRecyclerView?.showProgressBar() } Pero no puedo encontrar la manera para que android studio mantenga ese formatting.

Si usa la forma de expresión corta de una function, el tipo de resultado inferido de la expresión determina el tipo de retorno de la function. Si ese es un tipo de plataforma de Java, podría ser anulable. Si es de tipo Kotlin, sabrá la capacidad de nulidad correcta.

Pero ya que usas el operador seguro ?. usted está diciendo con certeza que podría ser nulo. Y si el resultado es null o Unit , ¿eso da el tipo de resultado inferido de Unit?

Lo cual es extraño, pero es exactamente lo que estás diciendo. Por lo tanto, utilice un cuerpo de function normal con { .. } o proporcione a la function un tipo de retorno explícito si es posible.

 fun showProgressView(): Unit { ultraRecyclerView?.showProgressBar() } 

También puede borrar la capacidad de anulación, creando una function de extensión en la Unit? :

 fun Unit?.void() = Unit 

Y úsala siempre que quieras corregir el tipo de devolución:

 fun showProgressView() = ultraRecyclerView?.showProgressBar().void() 

IntelliJ IDEA / Android Studio no parece tener una configuration para mantener el estilo de una function de cuerpo de bloque en una sola línea. Aun así, puedes usar run para evitar esto:

 fun showProgressView() = run<Unit> { ultraRecyclerView?.showProgressBar() } 

Normalmente no necesita agregar arguments de tipo explícito para run pero en este caso proporcionarlos le da la firma de método deseada (tipo de devolución de la Unit y no de la Unit? ).

Nota: Esta respuesta está adaptada de un comentario que di a por qué las asignaciones no son declaraciones .