Junior
Kotlin'da qaysi doira funksiyalarini bilasiz?
sobes.tech AI
AIdan javob
let: Ob'ekt ustida kod blokini bajaradi va oxirgi ifoda natijasini qaytaradi. Nulable ob'ektlardagi metodlarni xavfsiz chaqirish uchun ko'pincha ishlatiladi.run: Ikki variantga ega:- Kengaytirish funktsiyasi sifatida: Ob'ekt (
this) ustida kod blokini bajaradi va oxirgi ifoda natijasini qaytaradi. - Mustaqil funktsiya sifatida: Kontekstsiz kod blokini bajaradi va oxirgi ifoda natijasini qaytaradi.
- Kengaytirish funktsiyasi sifatida: Ob'ekt (
with: Argument sifatida berilgan ob'ekt-rezident ustida kod blokini bajaradi va oxirgi ifoda natijasini qaytaradi.apply: Ob'ekt (this) ustida kod blokini bajaradi va ob'ektni o'zi bilan qaytaradi. Ob'ektning xususiyatlarini sozlash uchun ko'pincha ishlatiladi.also: Ob'ekt (it) ustida kod blokini bajaradi va ob'ektni o'zi bilan qaytaradi. Ob'ekt ustida yon ta'sirlarni bajarish uchun ishlatiladi.
// let dan foydalanish misoli
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Satr uzunligini qaytaradi
} // length == 6
// run ni kengaytirish sifatida foydalanish misoli
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// run ni mustaqil funktsiya sifatida foydalanish misoli
val result = run {
// Receiver yo'q
println("Blok ishga tushirilmoqda")
1 + 2 // 3 qaytaradi
} // result == 3
// with ni foydalanish misoli
val configuration = configureUsing {
// this - configureUsing ga berilgan ob'ekt
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 ni foydalanish misoli
val person = mutableListOf<String>().apply {
// this == ro'yxat
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// also ni foydalanish misoli
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == ro'yxat
println("Ro'yxatni qayta ishlash: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]