Junior
Kotlinдеги кайсы чектөөлөр функцияларын билесиз?
sobes.tech AI
AIден жооп
let: Объекттин үстүндө коддун блокун аткарып, акыркы билдирүүнүн натыйжасын кайтарат. Көбүнчө nullable объекттердин методдорун коопсуз чакыруу үчүн колдонулат.run: эки вариантка ээ:- кеңейтүү катары: объекттин (
this) үстүндө коддун блокун аткарып, акыркы билдирүүнүн натыйжасын кайтарат. - өзүнчө функция катары: коддун блокун кабылгичсиз аткарып, акыркы билдирүүнүн натыйжасын кайтарат.
- кеңейтүү катары: объекттин (
with: кабыл алуучу объекттин үстүндө коддун блокун аткарып, акыркы билдирүүнүн натыйжасын кайтарат.apply: объекттин (this) үстүндө коддун блокун аткарып, өзүң кайтарат. Объекттин мүнөздөмөлөрүн конфигурациялоо үчүн кеңири колдонулат.also: объекттин (it) үстүндө коддун блокун аткарып, өзүң кайтарат. Объектте жанама иш-аракеттерди аткаруу үчүн колдонулат.
// `let` колдонуу мисалы
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // саптын узундугун кайтаруу
} // length == 6
// кеңейтүү катары `run` колдонуу мисалы
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// өзүнчө функция катары `run` колдонуу мисалы
val result = run {
// кабылдаучу жок
println("Running a block")
1 + 2 // 3 кайтарат
} // result == 3
// `with` колдонуу мисалы
val configuration = configureUsing {
// this - берилген объект
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` колдонуу мисалы
val person = mutableListOf<String>().apply {
// this == тизмек
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// `also` колдонуу мисалы
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == тизмек
println("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]