apply и also
Настраивайте объекты и выполняйте побочные действия
«apply и also» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Настройка объектов
apply и also — это функции области видимости, которые возвращают сам объект, а не результат лямбды. Поэтому они идеально подходят для настройки и построения цепочек вызовов.
Функция apply
apply выполняет блок, используя объект как this, и возвращает объект. Это классический инструмент для инициализации объекта после его создания.
fun main() {
val builder = StringBuilder().apply {
append("Hello")
append(", ")
append("World")
}
println(builder.toString())
}Почему apply возвращает объект
Поскольку apply возвращает получатель, можно напрямую присвоить настроенный объект переменной.
data class Person(var name: String = "", var age: Int = 0)
fun main() {
val p = Person().apply {
name = "Alice"
age = 30
}
println(p)
}apply использует this
Внутри apply объект является получателем, поэтому обращаться к его свойствам можно напрямую, без префикса.
data class Config(var host: String = "", var port: Int = 0)
fun main() {
val config = Config().apply {
host = "localhost"
port = 8080
}
println("${config.host}:${config.port}")
}Функция also
also выполняет блок, используя объект как it, и возвращает объект. Она применяется для побочных эффектов, например ведения журнала или проверки, которые не изменяют объект.
fun main() {
val numbers = mutableListOf(1, 2, 3)
numbers
.also { println("Before: $it") }
.add(4)
println("After: $numbers")
}also использует it
Поскольку also предоставляет доступ к объекту через it, эта функция удобна, когда нужно по-прежнему обращаться к внешнему this или просто явно сохранить ссылку.
fun main() {
val value = 42
.also { println("Logging value: $it") }
println(value)
}apply и also
Различие такое же, как между run и let:
applyиспользуетthisи лучше всего подходит для настройки свойств.alsoиспользуетitи лучше всего подходит для побочных эффектов над объектом.
Обе функции возвращают исходный объект.
data class Box(var size: Int = 0)
fun main() {
val box = Box()
.apply { size = 5 }
.also { println("Created box with size ${it.size}") }
println(box)
}Цепочка apply и also
Поскольку обе функции возвращают объект, их можно объединять в цепочку: сначала настроить объект, а затем выполнить побочные действия в последовательном конвейере вызовов.
data class Account(var owner: String = "", var balance: Int = 0)
fun main() {
val account = Account()
.apply { owner = "Sam" }
.apply { balance = 100 }
.also { println("New account: $it") }
println(account.balance)
}also для проверки
Используйте also, чтобы вставить проверку в середину цепочки, не нарушая её ход.
fun main() {
val result = listOf(1, 2, 3, 4)
.filter { it % 2 == 0 }
.also { check(it.isNotEmpty()) { "No even numbers" } }
println(result)
}Возврат объекта поддерживает конвейеры
Общая особенность apply и also заключается в том, что они никогда не прерывают цепочку: они всегда возвращают тот же объект, с которого вы начали.
fun main() {
val text = StringBuilder()
.apply { append("a") }
.also { it.append("b") }
.apply { append("c") }
println(text)
}Как выбрать apply или also
Выбирайте apply, когда инициализируете или изменяете объект, используя его собственные члены. Выбирайте also, когда выполняете действие с объектом, но не настраиваете его, например ведёте журнал, отлаживаете или проверяете объект.
Быстрая проверка
Какое значение возвращают apply и also?
Итоги
Вы изучили две функции области видимости, возвращающие объект:
applyиспользуетthisдля настройки объекта.alsoиспользуетitдля побочных эффектов над объектом.
Обе функции возвращают объект, что позволяет создавать понятные цепочки вызовов. Далее вы узнаете, как группировать операции с помощью with.
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «apply и also» бесплатный?
Да — полный текст урока «apply и also» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «apply и also»?
Настраивайте объекты и выполняйте побочные действия Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «apply и also»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- let и run
- apply и also
- with
- Выбор подходящего инструмента