let и run
Выполняйте операции над объектами
«let и run» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое функции области видимости
Kotlin предлагает пять функций области видимости: let, run, with, apply и also. Они позволяют выполнить блок кода над объектом внутри временной области видимости.
- К объекту можно обращаться как к
itилиthis. - Блок возвращает либо сам объект, либо результат лямбда-выражения.
В этом уроке мы сосредоточимся на let и run.
Функция let
let выполняет блок, в котором объект доступен как it, и возвращает результат лямбды.
Она отлично подходит для выполнения кода только тогда, когда значение не равно null, а также для преобразования значения во что-то другое.
fun main() {
val name = "Alice"
val length = name.let {
println("Name is $it")
it.length
}
println("Length: $length")
}let с допускающими null значениями
Чаще всего let используется вместе с оператором безопасного вызова ?. Блок выполняется только тогда, когда значение не равно null.
fun main() {
val name: String? = "Bob"
name?.let {
println("Hello, $it")
}
val empty: String? = null
empty?.let {
println("This never prints")
}
println("Done")
}Переименование it в let
Внутри let можно заменить имя it на более понятное, объявив параметр лямбды.
fun main() {
val price = 100
price.let { amount ->
println("The amount is $amount")
}
}Функция run
run выполняет блок, в котором объект доступен как this, и возвращает результат лямбды.
Используйте её, когда хотите обращаться к членам объекта напрямую, без префикса.
fun main() {
val text = "Kotlin"
val upper = text.run {
println("Length is $length")
uppercase()
}
println(upper)
}run без получателя
run также можно вызвать без объекта. Она просто выполняет блок и возвращает его результат. Это удобно для группировки операторов и вычисления значения.
fun main() {
val result = run {
val a = 5
val b = 10
a + b
}
println("Result: $result")
}it и this
Основное различие между let и run заключается в способе обращения к объекту:
letиспользуетit— параметр.runиспользуетthis— получатель, часто неявный.
Обе функции возвращают результат последнего выражения в блоке.
fun main() {
val word = "hi"
val a = word.let { it.length }
val b = word.run { length }
println("$a $b")
}Цепочки вызовов с let
Поскольку let возвращает результат лямбды, можно объединять вызовы в цепочку и пошагово преобразовывать значение.
fun main() {
val number = 4
val output = number
.let { it * 2 }
.let { it + 1 }
println(output)
}run для проверки на null и вычислений
Как и let, run работает с безопасными вызовами. Она объединяет проверку на null и обращение к членам объекта в одном блоке.
fun main() {
val message: String? = "Welcome"
val length = message?.run {
println(this)
length
}
println("Length: $length")
}Возврат других типов
Обе функции могут возвращать тип, отличный от типа объекта. Тип возвращаемого значения определяется тем, во что вычисляется последняя строка.
fun main() {
val n = 10
val label: String = n.let { "Value is $it" }
println(label)
}Когда выбрать let или run
Используйте let для безопасных относительно null операций и преобразований значений, когда it читается понятно.
Используйте run, когда хотите вызвать несколько членов объекта и вычислить результат, получая прямой доступ через this.
Быстрая проверка
Проверьте, насколько хорошо вы поняли let и run.
Итоги
Вы изучили две функции области видимости, возвращающие результат:
letпредоставляет доступ к объекту черезitи возвращает результат лямбды, поэтому отлично подходит для преобразований с безопасной обработкой null.runпредоставляет доступ к объекту черезthisи возвращает результат лямбды, поэтому отлично подходит для группировки обращений к членам объекта.
Далее вы узнаете, как настраивать объекты с помощью apply и добавлять побочные эффекты с помощью also.
Часто задаваемые вопросы
Урок «let и run» бесплатный?
Да — полный текст урока «let и run» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «let и run»?
Выполняйте операции над объектами Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «let и run»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.