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 sessió amb Google per llegir la pàgina completa.

Inicia sessió amb Google

Amb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.