V tomto článku sa na príklade naučíte používať getry a setre v Kotline.
Predtým, ako sa dozviete o getroch a setteroch, nezabudnite skontrolovať triedu a objekty Kotlin.
V programovaní sa getre používajú na získanie hodnoty nehnuteľnosti. Podobne sa nastavovače používajú na nastavenie hodnoty nehnuteľnosti.
V Kotline sú getre a setre voliteľné a automaticky sa generujú, ak ich nevytvoríte vo svojom programe.
Ako fungujú getre a setre?
Nasledujúci kód v Kotline
osoba triedy (var name: String = "defaultValue")
je ekvivalentné k
trieda Osoba (var name: String = "defaultValue" // getter get () = pole // setter set (hodnota) (pole = hodnota))
Keď vytvoríte inštanciu objektu Person
triedy a inicializujete vlastnosť name, odovzdá sa do hodnoty parametra setters a nastaví pole na hodnotu.
val p = Osoba () p.name = "jack"
Teraz, keď vstúpite do vlastnosti name objektu, získate pole kvôli kódu get() = field
.
println ("$ (p.name)")
Tu je funkčný príklad:
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 ) )
Po spustení programu bude výstup:
zdvihák
Takto predvolene fungujú getre a setre. Môžete však zmeniť hodnotu vlastnosti (upraviť hodnotu) pomocou getra a setra.
Príklad: Zmena hodnoty nehnuteľnosti
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 )
Po spustení programu bude výstup:
Maria: skutočný vek = 15 Maria: predstieraný vek = 18 Angela: skutočný vek = 35 Angela: predstieraný vek = 32
Tu funguje vlastnosť actualAge podľa očakávania.
Existuje však ďalšia nastavovač logiky na úpravu hodnoty vlastnosti age.