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 elFancyModifiera 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)
thises elModifiersobre el que se llama la función.- Por ejemplo:
Modifier.fancy(1f)Aquíthises 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. |