Sobes.tech
Middle

Kotlinдеги let, run, also жана apply кеңейтүү функцияларынын айырмасы эмнеде?

sobes.tech AI

AIден жооп

let: Объектти жабууучу функцияны чакырып, анын жыйынтыгын кайтарат. Объектти лямбда өрнөгүндө (it) аргумент катары колдонууга мүмкүндүк берет. Nullable объекттер менен иштөө үчүн ылайыктуу.

// `let` колдонуу мисалы
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - нөл эмес String
    it.length
}

run: Объектте код блогун иштетип, анын жыйынтыгын кайтарат. Блоктун ичинде объект this катары жеткиликтүү. Объектти баштоо жана методдорду чакыруу үчүн пайдалуу.

// `run` колдонуу мисалы
val result = buildString {
    // this - StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - String
    uppercase()
}

also: Объектте жабуу чакырып, ошол эле объектти кайтарат. Кошумча аракеттерди (мисалы, лог жазуу же конфигурациялоо) жүргүзүү үчүн ыңгайлуу, объектти өзгөртпөй.

// `also` колдонуу мисалы
val list = mutableListOf("a", "b", "c").also {
    // it - MutableList
    println("Тизмек түзүлдү: $it")
}

apply: Объектте жабуу чакырып, ошол эле объектти кайтарат. Блоктун ичинде объект this катары жеткиликтүү. Объекттин касиеттерин орнотуу үчүн пайдалуу.

// `apply` колдонуу мисалы
val textView = TextView(context).apply {
    // this - TextView
    text = "Салам, дүйнө!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Негизги айырмачылыктар:

Функция Объектке кандай жеткиликтүү Эмне кайтарат Туура колдонуу
let it Лямбда натыйжасы Nullable объекттер, трансформация
run this Лямбда натыйжасы Объектти баштоо жана методдорду чакыруу
also it Объект өзү Кошумча аракеттер (жакшы таасирлер)
apply this Объект өзү Өзгөртүүлөрдү орнотуу