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 |
Объект өзү | Өзгөртүүлөрдү орнотуу |