Что такое Implicit Receivers

«Что такое Implicit Receivers» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Implicit receivers — это неявные объекты, к которым можно обращаться без явного указания внутри лямбд или extension-функций. В Kotlin они доступны через this или this@OuterClass.

Пример:

class MyClass {
    fun doSomething() {
        with(StringBuilder()) {
            append("Hello") // Неявный receiver — `StringBuilder`
            this.append("World") // Явный receiver
        }
    }
}

Нюансы:

  • Вложенные лямбды могут переопределять receiver (apply/with/run).
  • Если receiver перекрыт, можно использовать квалифицированный this@Class.
  • Implicit receivers упрощают код, но могут снижать читаемость в сложных scope.