¿Qué es una función de extensión en Kotlin?

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 cualquier Modifier.
  • Recibe un parámetro level.
  • Usa this.then() para añadir el FancyModifier 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 el Modifier sobre el que se llama la función.
  • Por ejemplo: Modifier.fancy(1f) Aquí this es el Modifier.

✅ ¿Qué hace then()?

Combina el modificador actual (this) con el nuevo (FancyModifier(level)), añadiéndolo a la cadena.


📝 Resumen:

ElementoQué hace
Función de extensiónAñade nuevas funciones a una clase sin modificarla.
fun Modifier.fancy()Añade el modificador FancyModifier al Modifier.
thisEs el Modifier sobre el que se aplica.
.then()Añade el modificador personalizado a la cadena.