A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Apply

33/37
Recursos

Aportes 7

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

La Funci贸n apply
El prop贸sito de la funci贸n apply es tomar como alcance al objeto recibidor T sobre el que es invocado, aplicar las sentencias del par谩metro block que recibe sobre dicho contexto y retornar el mismo objeto modificado.

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

Lenguaje del c贸digo: Kotlin (kotlin)
Como ves, el cuerpo del tipo funci贸n a pasar es Unit, esto significa que no es necesario especificar un resultado en la 煤ltima l铆nea de la lambda con recibidor que pases como argumento.

Para referirte al recibidor, usa la expresi贸n this y as铆 tendr谩s acceso a los miembros.

instancia.apply{
    // Modificaci贸n de propiedades
    // Llamada de m茅todos
    // etc.
}

La funci贸n apply trabaja similar a with, solo que apply es una funci贸n de extensi贸n y retorna al objeto recibidor como resultado.

Esto te permite inicializar propiedades cuando creas u obtienes instancias de una clase e incluso encadenar operaciones subsecuentes.

Ejemplo Con La Funci贸n apply
Tomemos como ejemplo la declaraci贸n de una clase que representa un par de zapatos en el inventario de un negocio.

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

Ahora supongamos que es necesario crear una instancia inicial por defecto, luego es necesario cambiar sus propiedades y finalmente imprimir su detalle.

fun main() {
    val newShoe = Shoe()

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

    print(shoeDetail)
}

Salida:

Shoe(size=42, color=Rojo, stock=25)

Al usar la funci贸n apply sobre la instancia del par de zapatos, fue posible acceder directamente a cada propiedad, ya que el contexto de la funci贸n lambda es newShoe. Si usas IntelliJ podr谩s un mensaje del objeto recibidor permanente:

Funci贸n apply En Android
La funci贸n apply es de gran utilidad cuando obtienes referencias de views en Android o las creas desde el c贸digo.

Por ejemplo, sup贸n que requieres crear un CheckBox din谩micamente en un fragmento que maneja la creaci贸n de cuentas para tus usuarios.

Usando apply, puedes setear las propiedades necesarias para construcci贸n:

val checkBox = CheckBox(requireContext()).apply {
    text = "驴Enviar bolet铆n semanal"

    isChecked = true
    contentDescription = "CheckBox para bolet铆n semanal"
    setPadding(20)
}

Habr谩n propiedades cuyo mutador set() sea privado y no puedas acceder con el acceso de punto, por lo que debes usar directamente los m茅todos de asignaci贸n como setPadding().

FUENTE:https://www.develou.com/funcion-apply-en-kotlin/#:~:text=La funci贸n apply trabaja similar,e incluso encadenar operaciones subsecuentes.



C贸digo de la clase

fun main(args: Array<String>){
    //apply devuelve el valor de forma automatica
    //se puede crear una funcion apply segura
    val moviles = mutableListOf("Samsung A50","Samsung A51","Samsung A52")
            .apply {
                removeIf{movil -> movil.contains("A50")}
            }
    println(moviles)

    var colores : MutableList<String>? = null
    colores?.apply {
        //no lo corre porque es nulo
        println("Colores $this")
        println("Cantidad $size")
    }

    val colores2 : MutableList<String> = mutableListOf("Amarillo","Azul","Rojo")
    colores2?.apply {
        //no lo corre porque es nulo
        println("Colores $this")
        println("Cantidad $size")
    }
}

Pero colores dejo de ser null por el hecho de haber hecho el safe call (?).

Todo el curso ven铆amos usando

mutableListOf()

De d贸nde sac贸 el

MutableList<String>

???

<fun main(args: Array<String>) {
    val moviles = mutableListOf("Google Pixel 2XL", "Google Pixel 4a", "Huawei Redmi 9", "Xiaomi mi a3").apply{
            removeIf{movil -> movil.contains("Google")}
    }
    println(moviles)

    val colores : MutableList<String>? = mutableListOf("Amarillo", "Azul", "Rojo")
    colores?.apply {
        println("Nuestros colores son $this")
        println("La cantidad de colores es $size")
    }
}> 
fun main(args: Array<String>) {
    val moviles = mutableListOf("Google Pixel 2XL", "Google Pixel 4a", "Huawei Redmi 9", "Xiaomi mi a3").apply{
            removeIf{movil -> movil.contains("Google")}
    }
    println(moviles)

    val colores : MutableList<String>? = mutableListOf("Amarillo", "Azul", "Rojo")
    colores?.apply {
        println("Nuestros colores son $this")
        println("La cantidad de colores es $size")
    }
}