Ответ
apply и with — оба являются scope-функциями в Kotlin, но с разными подходами:
-
apply- Работает с контекстом как
this(можно опускать). - Возвращает сам объект (
this). - Используется для инициализации/конфигурации объекта.
- Работает с контекстом как
val textView = TextView(context).apply {
text = "Hello"
textSize = 16f
}
-
with- Принимает объект как аргумент (
thisвнутри блока). - Возвращает результат лямбды.
- Используется для группировки операций над объектом.
- Принимает объект как аргумент (
val text = with(textView) {
append(" World")
text.toString() // возвращаемое значение
}
Итог: apply возвращает объект, with — результат лямбды.