Escriu per cercar…

Extension Function

Afegir funcions a una classe que no és teva, sense modificar-la i sense heretar-ne.

S'ensenya a
ProgramacióFonaments de programacióDAM

Introducció

A Col·lecció vas escriure això:

kotlin
pets.filter { it.age > 10 }.map { it.name }

filter i map no són funcions que hagi escrit qui va fer la classe List.

Són funcions d’extensió: funcions que algú va escriure després, en un altre fitxer, i que es criden com si formessin part de la classe.

Aquesta pàgina explica com es fan, i de passada explica per què la biblioteca de Kotlin és com és.

El problema

És molt habitual trobar-se una classe com aquesta:

kotlin
data class Circle(val radius: Double) {
    fun area() = this.radius * this.radius * PI
}

Qui la va dissenyar va decidir que l’àrea era important. I prou.

Si al teu projecte el que necessites és el perímetre, l’has d’escriure tu:

kotlin
import kotlin.math.PI

data class Circle(val radius: Double) {
    fun area() = this.radius * this.radius * PI
}

fun circlePerimeter(circle: Circle) = 2 * PI * circle.radius

fun main() {
    val circle = Circle(2.5)

    println(circle.area())
    println(circlePerimeter(circle))
}

Estàs llegint una vista prèvia.

Inicia la sessió amb Google per llegir la pàgina sencera.

Inicia la sessió amb Google

Només et demanarem que acceptis les condicions del servei.