La Función also En Kotlin

En este tutorial aprenderás a cómo usar la función also en Kotlin para agregar efectos adicionales al contexto de un objeto.

La Función also

La función also es otra función de alcance, cuyo objetivo es permitirte añadir acciones adicionales sobre un objeto, a través de una lambda regular como parámetro.

Su uso se traduce a «y también hacer lo siguiente con el objeto».

recibidor.also{
     accionesAdicionales(it)
}

La declaración de su firma es la siguiente:

inline fun <T> T.also(block: (T) -> Unit): T

Al igual que apply, also retorna al objeto recibidor T como resultado y es una función de extensión. Salvo que block es un tipo función regular y usaremos la refenrecia it para T.

Ejemplo Con La Función also

Para ejemplificar el uso de la función also{} podemos tomar como base el ejemplo que vimos en el tutorial de apply, donde inicializábamos un par de zapatos y luego obteníamos su detalle para imprimirlo.

data class Shoe(
    var size: Int = 38,
    var color: String = "Negro",
    var stock: Int = 10
)

fun main() {
    val newShoe = Shoe()

    val shoeDetail = newShoe.apply {
        size = 42
        color = "Rojo"
        stock = 25
    }.toString()

    print(shoeDetail)
}

En este caso podemos añadir la ejecución de print() como parte de la cadena de inicialización con la función also.

fun main() {
    val newShoe = Shoe().apply {
        size = 42
        color = "Rojo"
        stock = 25
    }.also {
        print(it)
    }
}

Debido a que apply retorna la nueva instancia del zapato, es posible encadenar la llamada de also, por lo que la variable newShoe recibe el contenido final y de paso se imprime el mensaje pasando al indicador it.

Todo en una misma cadena de bloques asociados a un contexto que mejora la legibilidad de nuestro código.

Únete Al Discord De Develou

Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!