Выбор ответа Junior Функции, расширения и scope-функции спрашивают часто обновлено

Что возвращает apply

Вопрос

Что вернёт StringBuilder().apply { append("a"); append("b") }?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сам объект StringBuilder, на котором вызван apply. apply всегда возвращает объект-получатель, внутри он доступен как this.

Варианты ответа

  1. Строку "ab", собранную из двух append
  2. Unit, как у лямбды без результата
  3. Результат последнего append, только если он не null
  4. Сам объект StringBuilder, на котором вызван applyправильный ответ

Разбор

apply всегда возвращает объект-получатель, внутри он доступен как this. Поэтому apply используют для настройки: создали, сконфигурировали, получили тот же объект. Чтобы получить строку, нужен toString() или buildString { }. Результат лямбды возвращают let и run, а не apply.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.