Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Каково назначение ключевого слова by в Kotlin?

Вопрос проверяет понимание ключевого слова by, используемого для делегирования реализации свойств или функций другим объектам в Kotlin.

Короткий ответ

Ключевое слово by используется для делегирования. Оно позволяет классу передавать выполнение функций или управление свойством другому объекту. Это упрощает повторное использование кода и добавление дополнительного поведения к уже существующей функциональности.

Длинный ответ

Ключевое слово by используется в двух основных контекстах в Kotlin: делегирование функций и делегирование свойств.

 

Делегирование функций:

- Используется для передачи реализации интерфейса другому объекту.

- Пример:

interface Printer {
    fun printMessage(message: String)
}

class ConsolePrinter : Printer {
    override fun printMessage(message: String) {
        println("Printing: $message")
    }
}

class Logger(private val printer: Printer) : Printer by printer {
    override fun printMessage(message: String) {
        println("Logging message: $message")
        printer.printMessage(message)
    }
}

fun main() {
    val consolePrinter = ConsolePrinter()
    val logger = Logger(consolePrinter)

    logger.printMessage("Hello, Kotlin!")
    // Вывод:
    // Logging message: Hello, Kotlin!
    // Printing: Hello, Kotlin!
}

Здесь Logger делегирует выполнение printMessage объекту ConsolePrinter.

 

Делегирование свойств:

- Используется для управления доступом к свойствам с помощью делегатов.

- Пример с встроенным делегатом lazy:

val lazyValue: String by lazy {
    println("Computing value...")
    "Initialized value"
}

fun main() {
    println("Before accessing lazyValue")
    println(lazyValue)
    println(lazyValue)
    // Вывод:
    // Before accessing lazyValue
    // Computing value...
    // Initialized value
    // Initialized value
}

 

Преимущества by:

- Упрощает реализацию классов, позволяя избегать дублирования кода.

- Поддерживает чистый и читаемый код, особенно при повторяющихся шаблонах.


Ключевое слово by — это мощный инструмент, который делает делегирование в Kotlin простым и эффективным. Используйте его для оптимизации структуры кода и повышения повторного использования.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Kotlin

Ключевые слова

#by

#delegation

#property delegation

#interface delegation

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.