Выбор ответа Middle Лямбды, inline и reified обновлено
Лямбда с получателем
Вопрос
Что означает тип StringBuilder.() -> Unit?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Функция без параметров, где this это StringBuilder. Это функциональный тип с получателем: внутри лямбды this указывает на объект StringBuilder, и его методы вызываются напрямую: append("x").
Варианты ответа
- Функция, которая возвращает
StringBuilderпосле вызова - Расширение, которое нельзя вызвать напрямую
- Функция, принимающая
StringBuilderпараметромit - Функция без параметров, где
thisэтоStringBuilderправильный ответ
Разбор
Это функциональный тип с получателем: внутри лямбды this указывает на объект StringBuilder, и его методы вызываются напрямую: append("x"). Так устроены buildString { }, apply и DSL (Compose Modifier, Gradle Kotlin DSL). При вызове получатель передаётся как объект: sb.block() или block(sb). Варианту с it соответствует обычный тип (StringBuilder) -> Unit.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.