Kľúčové slovo this odkazuje na aktuálny objekt triedy. Používame ho keď chceme odlíšiť atribút triedy od parametra funkcie:
class Person {
var name: String = ""
fun setName(name: String) {
this.name = name // this.name = atribut triedy, name = parameter funkcie
}
}
fun main() {
val p = Person()
p.setName("Janko")
println(p.name) // Janko
}
Bez
thisby sme mali vždy parameter, nie atribút triedy -name = nameby priradilo parameter sebe samému.
class Person(val name: String, var age: Int) {
var email: String = ""
constructor(name: String, age: Int, email: String) : this(name, age) {
this.email = email // this.email = atribut triedy
}
}
thisthis môžeme použiť aj na reťazenie volaní (fluent API) alebo na predanie aktuálneho objektu:
class Builder {
var value: Int = 0
fun add(n: Int): Builder {
value += n
return this // vratime tento objekt
}
fun build(): Int = value
}
fun main() {
val result = Builder()
.add(5)
.add(3)
.build()
println(result) // 8
}
Vytvor triedu Obdlznik s atribútmi sirka a vyska a metódou nastavRozmery, ktorá použije this.
Doplň triedu Nastavenia o sekundárny konštruktor, v ktorom pomocou this priradíš parameter k atribútu.
Vytvor builder s metódami pridaj a vynasob, ktoré vrátia this, a reťazovo ich zavolaj.