Junior
Kotlin'da 'with' va 'let' funksiyalaridan qanday foydalanishni tushuntiring.
sobes.tech AI
AIdan javob
with va let — bu Kotlin standart kutubxona funksiyalari bo‘lib, ob'ektlar bilan qulayroq ishlash uchun mo‘ljallangan, ayniqsa bir xil ob'ekt bilan bir nechta operatsiyalarni bajarishda.
with
withob'ekt (qabul qiluvchi) va lambda qabul qiladi.- Lambda ichida
thisqabul qiluvchi ob'ektga ishora qiladi. - Lambda ichidagi oxirgi ifoda natijasini qaytaradi.
// with dan foydalanish misoli
class Person(var name: String, var age: Int)
fun main() {
val person = Person("Alice", 30)
val description = with(person) {
// this, person ga ishora qiladi
this.age += 1 // Omit qilish mumkin
"Name: $name, New age: $age" // Bu satr qaytariladi
}
println(description) // Natija: Name: Alice, New age: 31
}
Bir ob'ekt bilan bir nechta operatsiyalarni bajarish kerak bo‘lsa, ob'ektni o‘zi qaytarmasdan foydalaniladi. Ob'ektni sozlash uchun qulay.
let
letob'ekt (qabul qiluvchi) ustida kengaytirish funksiyasi sifatida chaqiriladi va lambda qabul qiladi.- Lambda ichida
it(yoki foydalanuvchi tomonidan tanlangan nom) ob'ektga ishora qiladi. - Lambda ichidagi oxirgi ifoda natijasini qaytaradi.
// let dan foydalanish misoli
fun main() {
val name: String? = "Bob"
val length = name?.let {
// it, name ga ishora qiladi
println("Nomi null emas: $it")
it.length // String uzunligini qaytaradi
}
println("Uzunlik: $length") // Natija: Nomi null emas: Bob, Uzunlik: 3
val nullName: String? = null
val lengthOfNull = nullName?.let {
// Bu blok bajarilmaydi, chunki nullName null
it.length
}
println("Null uzunligi: $lengthOfNull") // Natija: Null uzunligi: null
}
let null bo‘lmagan ob'ektlar ustida operatsiyalarni bajarish yoki yangi lokal bo‘lim yaratish uchun ishlatiladi (?.let bilan). Shuningdek, ob'ekt ustida yangi mahalliy o'zgaruvchi maydonini yaratish uchun ham qo‘llaniladi (it).
Asosiy farqlar:
- Chaqirish usuli:
withfunksiya sifatida chaqiriladi,letkengaytirish funksiyasi sifatida. - Lambda ichidagi referens o'zgaruvchi:
withthisni ishlatadi,letitni (yoki foydalanuvchi tomonidan tanlangan nom) ishlatadi. - Asosiy maqsad:
withasosan ob'ektni sozlash uchun,letko‘pincha null bo‘lishi mumkin bo‘lgan ob'ektlar bilan operatsiyalar va mahalliy scope yaratish uchun ishlatiladi.
with |
let |
|
|---|---|---|
| Chaqiriq | Funktsiya: with(ob'ekt) { ... } |
Kengaytirish funksiyasi: ob'ekt.let { ... } |
| Referens | this |
it (yoki foydalanuvchi tomonidan tanlangan nom) |
| Qaytaradi | Lambda ichidagi oxirgi ifoda natijasini | Lambda ichidagi oxirgi ifoda natijasini |
| Asosiy foydalanish | Ob'ektni sozlash, operatsiyalarni guruhlash | null tekshiruvi (?.let), lokal scope |