0Pricing
Kotlin Academy · Урок

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 — локальная установка не требуется.

Все уроки этого курса

  1. let и run
  2. apply и also
  3. with
  4. Выбор подходящего инструмента
← Назад к Kotlin Academy