Выбор ответа Middle Функции, расширения и scope-функции обновлено
run или with
Вопрос
Чем obj.run { } отличается от with(obj) { }?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Почти ничем, но run это расширение и работает с ?. Обе функции дают объект как this и возвращают результат лямбды.
Варианты ответа
- Почти ничем, но
runэто расширение и работает с?.правильный ответ withвозвращает сам объект, аrunрезультат лямбдыrunзапускает блок в новой корутине,withсинхронноwithможно вызывать только у data class иobject
Разбор
Обе функции дают объект как this и возвращают результат лямбды. Разница в форме вызова: with(obj) это обычная функция с аргументом, а run это расширение, поэтому можно написать obj?.run { } и выполнить блок только для не-null. run не связан с корутинами (это launch), а with работает с любым объектом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.