Apply aplica nuevos valores a las instancias
Arquitectura
Qué aprenderás sobre patrones de diseño en android
¿Qué es arquitectura?
Tipos de arquitectura en Android
Presentación del proyecto: Platzi Wallet
Patrón de arquitectura MVP
Implementación de MVP en el proyecto
Comunicación entre capas MVP
Creación del loader y resultados de la implementación
Patrón de arquitectura MVVM
Patrones de diseño
Qué es un patrón de diseño y qué tipos existen
Patrones de diseño creacionales
Singleton
Object Singleton
¿Qué es Builder?
Aplicando builder en código
Función Apply en Builder
Factory
Patrones de diseño estructurales
Adapter
Proxy
Facade
Patrones de comportamiento
Observer
Cómo implementar observer en el proyecto
Command
Cómo implementar command en el proyecto
Prueba de ejecución de comandos
Bonus: Architecture Components
Introducción a Architecture Components
LiveData
Introducción a Room y preparación del proyecto
Creación de componentes de Room
Comunicación entre componentes
ViewModel
Bonus: Custom View
Creando Custom Views
Conclusiones
Conclusiones y consejos para seguir aprendiendo
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.
Aportes 6
Preguntas 0
Apply aplica nuevos valores a las instancias
Me parece muy interesante Apply ya que nos será de mucha ayuda para implementar valores a nuestras instancias 😄
Un ejemplo se implementación Apply, asignando nuevos valores. Teniendo en el constructor parámetros por defectos.
Construcción de la clase Car
class Car(
var license: String,
var driver: String
) {
var id: String = ""
var passenger: Int = 0
set(value) {
if (value <= 4)
1..4
else
throw AssertionError("En mi Car solo caben 4 pasajeros")
field = value
}
}
fun main() {
Car(license = "ABC-001", driver = "Anahí Salgado").apply {
id = "01"
license = "BXD-002"
driver = "Cristian Villamil"
passenger = 4
println("El Identificador $id, con licencia $license, perteneciente a $driver, dispone de $passenger pasajeros")
}
}
Excelente!
Muy util esta forma de usar el Builder
Genial (Y)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.