- 1

Patrones de Diseño en Android: Soluciones y Aplicación Práctica
02:01 - 2

Fundamentos de Arquitectura de Software y su Impacto en Proyectos
02:02 - 3

Arquitecturas en Android: MVC y MVVM
02:38 - 4

Desarrollo de una Billetera Virtual con Git y Android Studio
03:20 - 5

Arquitectura MVP: Modelo, Vista y Presentador en Desarrollo de Software
04:01 - 6

Arquitectura MVP: Implementación en Proyectos Android
11:43 - 7

Implementación de Arquitectura MVP en Android
11:49 - 8

Implementación de Loaders en Arquitectura MVP con Android
04:49 - 9

Arquitectura MVVM en Android: Comunicación entre Capas
01:33
Funciones de Alcance en Kotlin: Uso de Apply
Clase 15 de 32 • Curso de Patrones de Diseño en Android
En Kotlin tenemos varias ventajas, una de ellas son las Scope Functions, estas funciones nos ayudan a manipular nuestras instancias, creando un bloque de memoria pequeño para modificar y obtener las instancias de manera segura. Existen 5 diferentes tipos de scope functions que tienen unas propiedades particulares y son: let, run, with, apply, y also.
La propiedad particular es que dentro de nuestra lambda function y la scope function podemos tener el contexto de nuestra instancia de la manera de un it o implícitamente como un this. Además de tener el contexto también tenemos el retorno, que puede ser la misma instancia o un nuevo valor de retorno.
Para la función apply, nosotros tenemos el contexto this y nos retorna la misma instancia, en pocas palabras es equivalente a retornar un this ya modificado, la ventaja con la scope function es que no tenemos que crear funciones ni delegarlo a otra clase. Veamos un ejemplo.
En primer lugar, creamos un data class de ejemplo:
data class ExampleUser ( var name: String, var lastName: String = "", var id: String = "" , var photoURL: String = "", var country: String = "" )
Luego, veamos cómo usamos el apply:
class ApplyExampleClass { init { var exampleUser = ExampleUser("Cristian") exampleUser = exampleUser.apply { lastName = "Villamil" country = "Colombia" } println(exampleUser) } }
Como podemos observar, en primer lugar creamos una instancia de ExampleUser, luego a esa instancia le aplicamos unos nuevos valores con la función apply, en la función tenemos el contexto implícito como un this, por eso podemos usar sus variables y modificarlas para que posteriormente me retorne la misma instancia ya modificada y yo pueda volverla a guardar en la misma variable. En conclusión, esta es otra manera de crear un patrón Builder en Kotlin. En la clase lo vimos de manera distinta con fines de aprender la base del patrón de diseño.