Функция run
Функция run является scope-функцией в Kotlin, которая выполняет блок кода в контексте объекта и возвращает результат этого блока. Она может быть вызвана как функция-расширение для любого объекта или как самостоятельная функция.
Синтаксис
// Вариант 1: как функция-расширение
val result = object.run {
// код, работающий с object
// последнее выражение - возвращаемое значение
}
// Вариант 2: как самостоятельная функция
val result = run {
// код блока
// последнее выражение - возвращаемое значение
}
Пример
Использование run как функции-расширения для настройки объекта:
val numbers = mutableListOf(1, 2, 3)
val res = numbers.run {
add(4)
add(5)
size
}
println(res)
Результат выполнения кода:
Int 5
Пример
Использование run для безопасного выполнения кода с null-объектом:
val name: String? = null
val length = name?.run {
println(this)
length
} ?: 0
println(length)
Результат выполнения кода:
Int 0
Пример
Использование самостоятельной версии run для вычисления значения:
val res = run {
val x = 5
val y = 10
x + y
}
println(res)
Результат выполнения кода:
Int 15
Пример
Использование run для преобразования объекта:
data class Person(val name: String, val age: Int)
val person = Person("Alex", 25)
val info = person.run {
"Name: $name, Age: $age"
}
println(info)
Результат выполнения кода:
String "Name: Alex, Age: 25"