Выбор подходящего инструмента
Когда использовать каждый из них
«Выбор подходящего инструмента» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Выбор функции области видимости
При наличии пяти функций области видимости выбор подходящей сводится к двум вопросам:
- Как обозначается объект: через
thisилиit? - Что возвращается: результат лямбды или объект?
Таблица выбора
Вот полная картина:
letиспользуетitи возвращает результат лямбды.runиспользуетthisи возвращает результат лямбды.withиспользуетthis(аргумент) и возвращает результат лямбды.applyиспользуетthisи возвращает объект.alsoиспользуетitи возвращает объект.
Используйте let для безопасности null
Если у вас есть значение, допускающее null, и вы хотите работать с ним только при наличии, используйте let с безопасным вызовом.
fun main() {
val name: String? = "Ada"
name?.let { println("Hello $it") }
}Используйте run для this и результата
Если вы хотите обращаться к членам объекта через this и вычислять результат, используйте run.
fun main() {
val text = "scope"
val info = text.run { "$this has length $length" }
println(info)
}Используйте with для группировки
Если у вас есть объект, не равный null, и нужно выполнить над ним несколько операций, with подходит естественным образом.
fun main() {
val list = listOf(1, 2, 3)
with(list) {
println(sum())
println(size)
}
}Используйте apply для настройки
Если вы создаёте объект и должны задать несколько свойств, apply делает код понятным и возвращает объект.
data class Server(var host: String = "", var port: Int = 0)
fun main() {
val server = Server().apply {
host = "0.0.0.0"
port = 80
}
println(server)
}Используйте also для побочных эффектов
Если вы хотите вести журнал, отлаживать или проверять объект, не изменяя его, выбирайте also с it.
fun main() {
val nums = listOf(1, 2, 3)
.also { println("Got ${it.size} items") }
println(nums.sum())
}Комбинирование функций области видимости
В реальном коде их часто объединяют в цепочку: настраивают с помощью apply, ведут журнал с помощью also и преобразуют с помощью let.
data class User(var name: String = "", var score: Int = 0)
fun main() {
val label = User()
.apply { name = "Max"; score = 90 }
.also { println("Created $it") }
.let { "${it.name}: ${it.score}" }
println(label)
}Избегайте чрезмерного использования
Функции области видимости могут ухудшить читаемость, если вкладывать их друг в друга или использовать слишком часто. Если обычная переменная и явный код читаются понятнее, отдайте предпочтение им. Используйте функции области видимости, чтобы устранить действительно повторяющийся код, а не ради изобретательности.
Проблема вложенности
Вложенные функции области видимости делают it и this неоднозначными. Если вложенность необходима, переименуйте параметр, чтобы сохранить ясность.
fun main() {
val outer = "A"
outer.let { o ->
"B".let { i ->
println("$o then $i")
}
}
}Краткая мысленная модель
Запомните: функции, возвращающие объект (apply, also), строят конвейеры; функции, возвращающие результат (let, run, with), преобразуют значения. Выбирайте между it и this с учётом читаемости.
Быстрая проверка
Какую функцию области видимости следует использовать, чтобы настроить только что созданный объект и получить этот объект обратно?
Итоги
Теперь у вас есть система выбора: ориентируйтесь на способ обращения (this или it) и возвращаемое значение (объект или результат). let и run преобразуют, with группирует, apply настраивает, а also добавляет побочные эффекты. Используйте их, чтобы уменьшать лишний код, а не добавлять его.
Часто задаваемые вопросы
Урок «Выбор подходящего инструмента» бесплатный?
Да — полный текст урока «Выбор подходящего инструмента» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Выбор подходящего инструмента»?
Когда использовать каждый из них Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Выбор подходящего инструмента»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- let и run
- apply и also
- with
- Выбор подходящего инструмента