Junior — Middle
Ar yra galimybė deklaruoti savybes už klasės apibrėžimo Kotlin kalboje?
sobes.tech AI
Atsakymas iš AI
Kotlin'e paprastai savybės deklaruojamos klasės apibrėžimo viduje. Tačiau, jei reikia pridėti savybę už klasės ribų, galima naudoti išplėtimo (extension properties).
Išplėtimo galimybės leidžia pridėti naujas savybes arba funkcijas prie esamų klasių be jų šaltinio kodo keitimo.
Pavyzdys išplėtimo savybės už klasės ribų:
class User(val name: String)
// Išplėtimo savybė už klasės ribų
val User.firstChar: Char
get() = this.name.first()
fun main() {
val user = User("Anna")
println(user.firstChar) // Išves 'A'
}
Svarbu: išplėtimo savybės negali turėti būsenos (backing field), todėl jos turi būti apskaičiuojamos (tik su getteriu arba su getteriu ir setteriu, bet be lauko).
Taip galima deklaruoti savybes už klasės apibrėžimo ribų per išplėtimus, bet su tam tikrais apribojimais.