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 sessió amb Google per llegir la pàgina completa.
Inicia sessió amb GoogleAmb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.