V tem članku se boste s pomočjo primera naučili uporabljati getterje in setterje v Kotlinu.
Preden se naučite o getterjih in setterju, preverite razred in predmete Kotlin.
Pri programiranju se geterji uporabljajo za pridobivanje vrednosti lastnosti. Podobno se nastavitelji uporabljajo za nastavitev vrednosti lastnosti.
V Kotlinu so pridobitelji in nastavitelji neobvezni in se samodejno ustvarijo, če jih ne ustvarite v svojem programu.
Kako delujejo geterji in monterji?
Naslednja koda v Kotlinu
razred Oseba (ime var: String = "defaultValue")
je enakovredno
razred Oseba (ime var: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
Ko ustvarite primerek predmeta Person
razreda in inicializirate lastnost imena, se ta posreduje vrednosti parametra nastavitve in polje nastavi na vrednost.
val p = oseba () p.name = "jack"
Zdaj, ko dostopate do lastnosti imena predmeta, boste zaradi kode dobili polje get() = field
.
println ("$ (p.name)")
Tu je delovni primer:
fun main(args: Array) ( val p = Person() p.name = "jack" println("$(p.name)") ) class Person ( var name: String = "defaultValue" get() = field set(value) ( field = value ) )
Ko zaženete program, bo rezultat:
priključek
Tako privzeto delujejo getterji in setterji. Vendar lahko vrednost lastnosti spremenite (spremenite vrednost) z uporabo getterjev in setterjev.
Primer: Spreminjanje vrednosti lastnosti
fun main(args: Array) ( val maria = Girl() maria.actualAge = 15 maria.age = 15 println("Maria: actual age = $(maria.actualAge)") println("Maria: pretended age = $(maria.age)") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("Angela: actual age = $(angela.actualAge)") println("Angela: pretended age = $(angela.age)") ) class Girl ( var age: Int = 0 get() = field set(value) ( field = if (value = 18 && value <= 30) value else value-3 ) var actualAge: Int = 0 )
Ko zaženete program, bo rezultat:
Maria: dejanska starost = 15 Maria: pretvarjena starost = 18 Angela: dejanska starost = 35 Angela: pretvarjena starost = 32
Tu lastnost actualAge deluje po pričakovanjih.
Vendar pa obstaja dodatna logika nastaviteljev za spreminjanje vrednosti lastnosti starosti.