Una función de extensión permite “añadir” funciones a una clase sin modificarla directamente, bien porque no te interesa modificarla o porque no puedes (no tienes permisos o el código).
Esto es perfecto cuando quieres ampliar funcionalidades de clases que no controlas (como Modifier
en Compose).
🔍 ¿Qué hace esta extensión?
fun Modifier.fancy(level: Float) = this.then(FancyModifier(level))
Significa:
- Extiende la clase
Modifier
. - Ahora puedes llamar a
.fancy()
sobre cualquierModifier
. - Recibe un parámetro
level
. - Usa
this.then()
para añadir elFancyModifier
a la cadena de modificadores.
✅ ¿Por qué es útil?
Gracias a esto, puedes escribir:
Row( Modifier .fancy(1f) .padding(10.dp) )
Como si fancy()
fuera un modificador más del sistema, igual que padding()
, background()
, etc.
✅ ¿Qué hace this
aquí?
En la extensión:
fun Modifier.fancy(level: Float)
this
es elModifier
sobre el que se llama la función.- Por ejemplo:
Modifier.fancy(1f)
Aquíthis
es elModifier
.
✅ ¿Qué hace then()
?
Combina el modificador actual (this
) con el nuevo (FancyModifier(level)
), añadiéndolo a la cadena.
📝 Resumen:
Elemento | Qué hace |
---|---|
Función de extensión | Añade nuevas funciones a una clase sin modificarla. |
fun Modifier.fancy() | Añade el modificador FancyModifier al Modifier . |
this | Es el Modifier sobre el que se aplica. |
.then() | Añade el modificador personalizado a la cadena. |