with и let — это стандартные библиотечные функции Kotlin, предназначенные для более удобной работы с объектами, особенно при выполнении нескольких операций с одним и тем же объектом.
with
with принимает объект (приемник) и лямбду как аргументы.this ссылается на объект-приемник.kotlin
Используется, когда нужно выполнить несколько операций с одним объектом без необходимости возвращать сам объект. Удобен для конфигурирования объектов.
let
let вызывается на объекте (приемнике) как функция расширения и принимает лямбду как аргумент.it (или пользовательское имя) ссылается на объект-приемник.kotlin
Используется, когда нужно выполнить операции над не-null объектом (часто в сочетании с оператором безопасного вызова ?.) или когда нужно ввести новую область видимости с локальной переменной для объекта (it).
Ключевые отличия:
with вызывается как функция, let как функция расширения.with использует this, let использует it (или пользовательское имя).with в основном используется для конфигурирования, let часто используется для операций над потенциально null-объектами и создания локальных областей видимости.with | let | |
|---|---|---|
| Вызов | Функция: with(object) { ... } | Функция расширения: object.let { ... } |
| Ссылка | this | it (или пользовательское имя) |
| Возвращает | Результат последнего выражения в лямбде | Результат последнего выражения в лямбде |
| Основное исп. | Конфигурирование объекта, группировка ops | Проверка на null (?.let), локальная область |