Junior
Milliseid vaatevälja funktsioone te Kotlinis tead?
sobes.tech AI
Vastus AI-lt
let: Täidab objekti peal koodiploki ja tagastab viimase avaldise tulemuse. Kasutatakse sageli nullable objektide meetodite turvaliseks kutsumiseks.run: omab kahte varianti:- laiendusena: täidab koodiploki objekti (
this) peal ja tagastab viimase avaldise tulemuse. - iseseisva funktsioonina: täidab koodiploki ilma vastuvõtja objekti ja tagastab viimase avaldise tulemuse.
- laiendusena: täidab koodiploki objekti (
with: täidab koodiploki vastuvõtja objekti peal ja tagastab viimase avaldise tulemuse.apply: täidab koodiploki objekti (this) peal ja tagastab objekti ennast. Kasutatakse sageli objekti omaduste seadistamiseks.also: täidab koodiploki objekti (it) peal ja tagastab objekti ennast. Kasutatakse kõrvaltoimete teostamiseks objektil.
// `let` näide
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // stringi pikkus
} // length == 6
// laiendusena `run` näide
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// iseseisva funktsioonina `run` näide
val result = run {
// ilma vastuvõtjata
println("Running a block")
1 + 2 // tagastab 3
} // result == 3
// `with` näide
val configuration = configureUsing {
// this - antud objekt
width = 100
height = 200
}
fun configureUsing(builder: ScopeExample.() -> Unit): ScopeExample {
val example = ScopeExample()
example.builder()
return example
}
class ScopeExample {
var width: Int = 0
var height: Int = 0
}
// `apply` näide
val person = mutableListOf<String>().apply {
// this == nimekiri
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// `also` näide
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == nimekiri
println("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]