Ответ
Extension-функции позволяют добавлять новые методы к существующим классам без наследования или модификации исходного кода. Они объявляются с префиксом типа-получателя перед именем функции.
fun String.addExclamation(): String = "$this!"
// Использование
val greeting = "Hello".addExclamation() // "Hello!"
Ключевые особенности:
- Не модифицируют оригинальный класс
- Вызываются как обычные методы
- Доступны только в области видимости, где объявлены
- Разрешение статическое (не виртуальные)
- Могут быть nullable (
String?.)
Полезны для:
- Улучшения читаемости кода
- Добавления утилитарных методов
- Работы с классами из сторонних библиотек