Extension Function
Afegir funcions a una classe que no és teva, sense modificar-la i sense heretar-ne.
Introducció
A Col·lecció vas escriure això:
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:
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:
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 GoogleNomés et demanarem que acceptis les condicions del servei.