Sobes.tech
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

  • with ob'ekt (qabul qiluvchi) va lambda qabul qiladi.
  • Lambda ichida this qabul 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

  • let ob'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: with funksiya sifatida chaqiriladi, let kengaytirish funksiyasi sifatida.
  • Lambda ichidagi referens o'zgaruvchi: with this ni ishlatadi, let it ni (yoki foydalanuvchi tomonidan tanlangan nom) ishlatadi.
  • Asosiy maqsad: with asosan ob'ektni sozlash uchun, let ko‘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